情報セキュリティ講座(98) クロスサイトスクリプティング②
クロスサイトスクリプティングによる被害は、ユーザが脆弱性のあるWebサイトに文字列を入力する際に、スクリプトが実行されてしまうことから、発生します。従い、ユーザが文字列を入力しても、スクリプトが実行されないようにすることが、対策となります。
1. エスケープ処理
テキスト入力欄にHTMLタグ等(<br>とか)の入力をする必要なケースは、ほとんどありません。
従い、HTMLタグの入力をしても、無効とすることが有効です。
その一つが、HTMLタグが入力された場合に行うエスケープ処理です。
< ⇒ <
> ⇒ >
& ⇒ &
といった感じです。
2. <script></script>要素を、動的に生成しない
script要素を動的に生成してしまうと、思わぬスクリプトを動かすことが懸念されます。表示の際に、<script></script>要素を自動生成しないことが、対策となります。
3. スタイルシートの取り込みをしない
スタイルシートを勝手に読み込むと、思わぬ動作をする危険があります。
4. スクリプトに該当する文字列を排除する
入力された文字列から、スクリプトに該当する文字列があった場合は、排除することが対策となります。
5. HTTPレスポンスヘッダのContent-Typeフィールドにcharsetを指定する
Content-Typeのフィールドを省略すると、ブラウザは独自の方法で文字コードを推定します。攻撃者がこの性質を悪用すると、悪意ある文字コードを読み込ませる余地がでてしまいます。