[セキュリティ] クロスサイトスクリプティングについて

クロスサイトスクリプティング(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

コメント投稿フォーム