「反射型・格納型…種類が多くて混乱する」
「試験では対策のどこが問われるの?」
あなたが毎日開くコメント欄や掲示板を思い浮かべてください。誰かの投稿が、ページを見た人のブラウザの中で勝手に動き出す——XSS(クロスサイトスクリプティング)は、その隙を突く攻撃です。
正体は「サイトが利用者の入力をそのまま画面に出してしまう」弱さ。そして守りの主役は、攻撃を止める難しい技術ではなく、表示するときのエスケープ処理です。
ここからは、被害が生まれる流れを図で開き、混同しやすい反射型・格納型・DOM型を表で仕分け、試験で最頻出の「入力検証と出力エスケープ、どちらが主役か」まで整理します。SG・応用情報の対策に効きます。なお悪用防止のため、攻撃の具体的な文字列やコードは載せません。
1. 被害が生まれる流れ — 狙われるのは第三者

XSSの本質は「利用者の入力を、ただの文字ではなく“動く仕掛け”として画面に出してしまう」問題です。掲示板やコメント欄のように、入力をそのまま表示するサイトで起こります。被害の流れは3ステップです。次の図を見てください。
ここでの怖さは、被害を受けるのが「書き込んだ人」ではなく「そのページを開いただけの第三者」だという点です。利用者に落ち度はなく、サイトの作りの弱さが、そのまま他人の被害に変わります。
2. XSSの3タイプ — 反射型・格納型・DOM型

XSSは1種類ではありません。あなたが混同しやすい3タイプを、仕掛けが「どこを経由するか」で仕分けた表がこれです。
| タイプ | 仕掛けの通り道 | 特徴 |
|---|---|---|
| 反射型 | リンクなどの入力が、その場の応答に跳ね返る | だましのリンクを踏ませて発動。1回きり |
| 格納型 | サーバに保存され、見た人全員に配られる | 掲示板などに居座り、被害が広がりやすい |
| DOM型 | ブラウザ側の処理だけで発動(サーバを経由しない) | 画面を組み立てるスクリプトの隙を突く |
この3つのうち、あなたがとくに警戒したいのが格納型です。仕掛けがサーバに居座り、そのページを開いた人へ次々に配られるため、被害が一度に大きく広がります。反射型が「1人を狙う釣り」なら、格納型は「みんなを巻き込む罠」だと捉えてください。
3. 何が奪われるのか — 被害の3方向

あなたが対策の重さを実感するには、何が起こりうるかを知るのが近道です。被害は大きく3方向に整理できます。
- 盗まれる: ログイン状態を示すクッキーなど、大切な情報が奪われる
- なりすまされる: 利用者本人になりすまして操作される
- だまされる: 本物そっくりの偽入力画面に誘導される
やっかいなのは、利用者が信頼して使っているサイトの上で被害が起こる点です。怪しいサイトを避けていても、よく使うサイトの投稿欄に仕掛けが紛れていれば巻き込まれます。だからこそ、サイトを作る側が表示の段階で防ぐ責任を負います。
4. 防御の核心 — 主役は「出力エスケープ」

ここが試験でも実務でも肝心なところです。対策は複数ありますが、主役は「表示(出力)するときのエスケープ処理」だと押さえてください。入力を受け取る段の検証は、あくまで補完です。両者の役割を表で分けます。
| 対策 | タイミング | 役割 |
|---|---|---|
| 出力エスケープ | 画面に表示するとき | 主役。記号をただの文字に変え、仕掛けを動かさない |
| 入力値の検証 | データを受け取るとき | 補完。想定した形式・文字だけを受け付ける |
| CSP(コンテンツセキュリティポリシー) | ブラウザでの実行時 | 多層防御。許可しないスクリプトの実行を抑える |
なぜ出力側が主役なのか。理由は、同じデータでも表示する場所によって危険な記号が変わるからです。受け取った瞬間に「安全」と判断すると、別の画面で表示したときに穴が空きます。だから「出す直前に、その場所に合わせて無害化する」のが確実な守り方になります。
5. 現場の防御優先順位と、試験での問われ方

守りは、あれもこれもと手を広げると穴が残ります。当社の在籍エンジニア(SE歴15年以上)が現場で付ける、防御の優先順位はこうです。
- 出力エスケープ(最優先):表示する場所ごとに、記号をただの文字へ変える。ここが抜けなければ、被害の大半は防げます。
- 入力値の検証(補完):想定した形式・文字だけを受け付け、危ない入力を入口で減らす。
- CSPなどの多層防御:仕組みで許可しないスクリプトの実行を抑え、万一を受け止める。
あなたが漏らしやすいのは、データを受け取った瞬間に「安全」と思い込むこと。同じデータを別の画面(メール本文・管理画面など)で出すと穴が空きます。「入口で1回きれいにすれば安心」ではなく「出す場所ごとに無害化する」が現場の鉄則です。
試験では、対策の選択肢から適切なものを選ばせる形が定番です。あなたが押さえておく3点はこれです。「入力値の検証だけで防げる」は誤りで主役は出力エスケープ、SQLインジェクションとは「動く場所(ブラウザかデータベースか)」が違うだけで発想は同じ、被害を受けるのは書き込んだ本人ではなく第三者——この3点が繰り返し問われます。
次のステップ
セキュリティ分野が試験全体でどう問われるかを俯瞰したいなら、情報セキュリティマネジメント試験の試験範囲と勉強法ガイド で学習の優先順位を立てるのがおすすめです。
得点力に変えるなら、SG 脆弱性管理の問題集 で、実際の出題角度に手を動かして慣れておくのが近道です。