サイバー攻撃手法・脆弱性分析 重要度:★★★出題: AM2・PM1
クロスサイトスクリプティング (XSS) と CSRF (クロスサイトリクエストフォージェリ)
くろすさいとすくりぷてぃんぐ / くろすさいとりくえすとふぉーじぇり / Cross-Site Scripting (XSS) / Cross-Site Request Forgery (CSRF)
被害者のブラウザ上で悪意あるスクリプトを実行させるXSSと、ログイン中の利用者のブラウザから本人の意図しない状態変更リクエストを強制送信させるCSRF。
3行速習ポイント
- XSS(反射型・格納型・DOM Based):HTML出力時の特殊文字エスケープ(サニタイジング:& < > " ' の実体参照化)およびテンプレートエンジンの自動エスケープで根本対策
- CSRF:罠サイト閲覧時にセッションCookieが自動付与される仕組みを悪用するため、POSTリクエストごとに推測困難な「CSRFトークン」を検証して根本対策
- 仮に同一サイト内にXSS脆弱性が存在すると、JavaScriptで正規ページからCSRFトークンを読み取られてしまうため、CSRF対策も無力化される
図解
図XSS(クロスサイトスクリプティング)と CSRF の仕組み・対策比較
XSS(悪意あるスクリプトの注入・実行)出力時エスケープで対策
被害者のブラウザ上でスクリプトが動作し情報窃取・偽画面表示
【根本対策】HTML出力時の特殊文字エスケープ(& < > " ')、DOM操作時のtextContent使用。【保険対策】CSP導入、CookieへのHttpOnly属性付与
CSRF(ログイン中セッションへの便乗リクエスト強要)CSRFトークン検証で対策
罠サイト閲覧時にCookieが自動送信され意図しない更新処理が実行
【根本対策】推測困難なCSRFトークン(hidden項目や独自ヘッダ)の発行・サーバ側照合、重要処理時のパスワード再入力。【補完対策】SameSite Cookie属性
💡 同一サイト内にXSS脆弱性があると、JavaScriptから正規ページのCSRFトークンを読み取られてCSRF対策も突破される点に注意
概要と本質
XSSとCSRFは名前が似ていますが攻撃の仕組みと対策が全く異なります。XSSは「スクリプトの注入・実行」であり出力時エスケープが根本対策、CSRFは「正規セッションへの便乗リクエスト強要」でありCSRFトークン検証(または再認証・カスタムヘッダ検証・SameSite Cookie)が対策です。
重要ポイント・コア概念
- DOM Based XSS:サーバを経由せずクライアント側のJavaScript(innerHTMLやeval、location.hrefへのjavascript:スキーム代入)で発火するため、textContentの使用やURLスキーム検証が必要
- CSRFが成立する条件:①重要な処理(購入・パスワード変更・送金等)のリクエストに推測不能なトークンや現在のパスワードが含まれていないこと、②利用者が対象サイトにログイン中であること
- HttpOnly属性の限界:HttpOnlyを付与しても、XSSでブラウザ上から直接fetch/XMLHttpRequestを送信するなりすまし操作(セッションライディング)は防げないため、エスケープによる根本対策が必須
午後記述・情報セキュリティ対策での攻略ポイント
午後問題では「なぜHttpOnlyを設定しているのにXSSで不正送金されたのか(Cookieを盗まなくてもブラウザ上でスクリプトからリクエストを送信できるため)」「为什么XSSがあるとCSRFトークン対策が突破されるのか(同一オリジン上でトークンをスクリプトから取得できるため)」が超頻出の記述問題です。
午後記述で使える加点キーワード(クリックでコピー)
関連する重要用語
この用語が出題された過去問を解く(1分演習)
即時アウトプットで定着情報処理安全確保支援士 過去問演習で実践力を鍛える