WEBサイト構築に当たってセキュリティを確保したいとの要望があり調べていたら、さすがIPA!
ドキュメントを用意してます。しかも随時更新されている模様。
https://www.ipa.go.jp/security/vuln/websecurity.html
ここの
にすべてのことが書いてありました。
主な脆弱性として以下11個。
- SQL インジェクション
- OS コマンド・インジェクション
- パス名パラメータの未チェック/ディレクトリ・トラバーサル
- セッション管理の不備
- クロスサイト・スクリプティング
- CSRF(クロスサイト・リクエスト・フォージェリ)
- HTTP ヘッダ・インジェクション
- メールヘッダ・インジェクション
- クリックジャッキング
- バッファオーバーフロー
- アクセス制御や認可制御の欠落
この中で[4]のセッション管理については、セッションハイジャックが有名だけど、悪意のある人が取得したIDを他人に埋め込ませる方法もあるようです。巧妙な手口。セッションを使いまわしているとそうなるようです。ちゃんと新規ログイン時には新しいセッションを作るようにすれば問題ないです。
入力フォームとかあるページを作る場合は、[5]クロスサイト・スクリプティングを注意しましょう。ほとんどのWEB系言語には対策できるクラス、メソッド、関数があります。自作する場合でも、特別な記号文字(「<」、「>」、「&」等)を、HTML エンティティ(「<」、「>」、「&」等)に置換すればOK。そのほか指定ワードを除去するなどドキュメントにいろいろ書いてあります。
これを読むだけで十分です。