はじめに
クロスサイトスクリプティング(XSS: Cross-Site Scripting)は、Webアプリケーションの代表的な脆弱性であり、攻撃者によって仕込まれた悪意あるスクリプトが利用者のブラウザで実行される問題です。
本記事では、XSSの種類・被害・対策について整理します。
XSSとは?
XSS(Cross-Site Scripting) とは、Webアプリが入力値を適切に無害化せず出力することで発生する脆弱性です。
攻撃者が埋め込んだスクリプト(通常はJavaScript)が利用者のブラウザで実行され、情報漏洩や不正操作につながります。
攻撃の仕組み
- 攻撃者が悪意あるスクリプトをフォームやURLに仕込む
- アプリがそのままHTMLに出力してしまう
- 利用者がページを開くと、ブラウザがスクリプトを実行する
- 結果として、利用者の情報が盗まれたり、不正な操作が行われる
XSSの種類
1. 反射型(Reflected XSS)
- 攻撃コードがリクエストに含まれ、即時レスポンスに反映される
- フィッシングリンクをクリックした利用者のみが被害
2. 格納型(Stored XSS)
- 攻撃コードがDBや掲示板に保存される
- ページを閲覧するすべての利用者が被害対象
3. DOMベースXSS
- サーバを介さず、JavaScriptのDOM操作に起因
- クライアントサイドの処理に問題がある場合に発生
被害例
- CookieやセッションIDの盗難 → なりすましログイン
- 偽フォーム表示 → フィッシング詐欺
- 強制リダイレクト → マルウェア配布サイトへ誘導
- 不正操作 → 攻撃者が利用者アカウントで投稿や送金を実行
対策方法
サーバ側
- 入力値検証(バリデーション)
- 出力時エスケープ(HTML, JavaScript, CSS, URLごとに適切に処理)
- CSP(Content Security Policy)の導入
- CookieにHttpOnly属性を付与
開発プロセス
- OWASPのセキュアコーディング指針の遵守
- 脆弱性診断ツールによる定期チェック
まとめ
- XSSはOWASP Top 10常連の重大な脆弱性
- 「入力チェック」よりも「出力時のエスケープ」が重要
- CSPやHttpOnlyなどブラウザ機能も併用することで防御力を高められる