質問: python始めて数ヶ月程度の初心者です。よろしくお願いします。 まず状況を述べます。とりあえず実験的に、小さなウェブサイトを立ち上げて、小さいDBと紐付いたDBの更新フォームくらいのものをつくってオープンしたいと考えているものです。 現在は、Linuxでiptablesで HTTPとHTTPSとSSH(SSHポートナンバー変換済み)以外のポートを閉め、SSHのrootログインを不可にする、パスを複雑にするなどファイアウォールまわりは固めています。 次にXXSやSQLインジェクション対策として、危険性のある文字列をエスケープ処理するところまで参りました。 1経験不足のため、どの程度のセキュリティ強度が、世のエンジニアの皆様にとって最低限必要(仕事の時間制限があるなかでのこれだけはやっとかないとまずいという程度です)とお考えになられているのか伺いたいと思い、書き込みました。 上記はフレームワークを用いない素のスクリプトでウェブサーバーを組んだ場合の質問なのですが、追加質問で、 2DjangoやFlaskは、テンプレートで生成したフォームは、エスケープ処理も勝手に実装してくれているという説明をみたので、フレームワークで構築していく分には心配は少ないかなと楽観的なのですが、フレームワークの場合でも自分で追加でエスケープ処理などのサニタイジングやっとかないとまずいという部分 もしご存知でしたら、伺えればと思います。 ざっくりとした質問で申し訳御座いませんが、ご協力いただけると幸いに存じます。よろしくお願いします。
回答: IPAにまとまった資料があります。 安全なウェブサイトの作り方 ここのPDFは一通りやる必要があるかと。 フレームワークでエスケープ処理が実装されている場合は積極的に利用し、自身で何かする処理を入れないようにするのが通常かと思います。自身で中途半端に介入することで元の意図とズレた動作をし、エスケープが正常にされない事態を回避するためです。 また、その処理を一通り追って、納得しておくとより強固に利用することが可能です。 *フレームワークによっては、エスケープ処理を謳っていながら、穴のある実装である場合もあるようです。