🔐 ITパスポート | テクノロジ系・セキュリティ

クロスサイトスクリプティング(XSS)とは?

正規のWebサイトを踏み台にして、利用者のブラウザで悪意あるスクリプトを実行させる攻撃。

🎬 こんなシーンを想像
よく使う掲示板サイトのコメント欄に、攻撃者が悪意あるJavaScriptを書き込んだ。何も知らないあなたがそのページを開いた瞬間、スクリプトがブラウザ上で実行され、あなたのCookieが攻撃者に送信された。
あなたはそのサイトに何も入力していない。ただ見ただけで被害に遭った。
→ これが XSS(クロスサイトスクリプティング)の典型的な攻撃。
🗂️ XSS 攻撃の流れ(図解) 攻撃者 悪意ある スクリプト注入 Webサーバ (スクリプトを蓄積) ページ配信 (スクリプト込み) 被害者(あなた) ブラウザでスクリプトが実行 Cookie盗取・偽ページ表示など 盗んだ情報を 攻撃者に送信
📋 XSSの攻撃ステップ
① 攻撃者がスクリプトを注入
入力フォームやURLパラメータに <script>悪意ある処理</script> を仕込む。サニタイズ(無害化)が不十分なサイトはこれをページに埋め込んでしまう。
② 被害者がそのページを閲覧
正規のサイトを普通に開くだけ。見た目は正常なページだが、スクリプトが埋め込まれている。
③ 被害者のブラウザでスクリプト実行
Cookie(セッション情報)の盗取・偽のログイン画面の表示・キーロギングなどが被害者の端末上で動く。被害者は気づきにくい。
④ 対策:サニタイズ+CSP
入力値をHTMLとして解釈させない「エスケープ処理(サニタイズ)」が基本対策。加えてCSP(Content Security Policy)でスクリプトの実行元を制限するのが有効。
⚠️ ひっかけ注意ポイント
CSRF(クロスサイトリクエストフォージェリ)と混同しやすい
XSSは「悪意あるスクリプトを被害者のブラウザで実行させる」。CSRFは「被害者が意図しないリクエストを被害者の権限で送信させる」。どちらもクロスサイトだが、攻撃の主体が違う。
SQLインジェクションと混同しやすい
SQLインジェクションはデータベースへの不正操作(サーバ側の問題)。XSSはブラウザ上のスクリプト実行(クライアント側の問題)。攻撃が刺さる場所が違う。
「スクリプト=攻撃者が直接実行」ではない
攻撃者は直接実行しない。被害者のブラウザに実行させるのがXSSの特徴。「踏み台にされた正規サイトを介する」点が名前の由来(クロスサイト)。
判断のコツ
正規サイトに埋め込まれた悪意あるスクリプトが被害者のブラウザで動く」→ XSS。
🧠 覚え方(無理やりゴロ)
X(クロス)して サイト越えに スクリプト刺す
Cross(越える)+ Site(サイト)+ Scripting(スクリプト注入)

エックスエスエスブラウザでスクリプトが爆発(XSS)
被害はサーバでなくブラウザ(クライアント)で起きる ← これが最大のポイント
ITパスポート 詳細解説 / itp-xss / HTML+SVG(文字はすべてテキスト)