[セキュリティ] クロスサイトスクリプティングについて
クロスサイトスクリプティング(XSS)について
クロスサイト(サイトを横断した)スクリプティング(スクリプト処理)によって、悪意のある攻撃をすること、若しくは、それを許す脆弱性のことを指す。広義には、スクリプトだけではなく、HTMLタグの挿入などによるものも含む。
原理
問い合わせフォームなどで、入力画面の次に確認画面が表示される(フォームから入力された情報を動的に表示する)サイトがあり、以下のようなソースを使用していると仮定する。
<p>名前:<?php echo $name; ?></p>
このサイトにおいて、
フォームの該当項目に javascript のコード(<script>alert("XSS")</script>)を入力されたとする。
このサイトが適切な対策を施していない場合は、上記ページは以下のように生成される。
<p>名前:<script>alert("XSS")</script></p>
ブラウザがこのページを表示すると、入力されたスクリプトを実行し、画面に「XSS」と表示されたアラートを表示する。このようにして、悪意のあるスクリプトを混入させることで、サイト側が意図しない動作を起こす。
対策
最も一般的且つ効果的な対策として、出力値のエスケープを適切に施すことが挙げられる。上記で用いた例を使用すると、入力値を出力する部分のソースを以下のように変更する。
<p>名前:<?php echo htmlspecialchars($name); ?></p>
これにより、該当項目にjavascriptなどが入力されても、ブラウザはスクリプトとは判定しないため、意図しない動作を防ぐことができる。
以下のようなことを行った場合、上記の対策では不十分となる。
- style タグや script タグの内部に外部からの入力を挿入する
- タグの属性部分に外部からの入力を挿入する(例:aタグのhref属性)
- その他 PHP に存在する問題(参考サイトとして記載)
このような処理を行う必要がある場合は、それ用の対策を施す必要がある。
トラックバックURL
http://mashimonator.weblike.jp/mt/mt-tb.cgi/30
コメント投稿フォーム