XSS(クロスサイトスクリプティング)は、他人のブラウザで、攻撃者のスクリプトを動かす攻撃です。
初級の解説は準備中のため、初級の内容を表示しています。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
どう起きる?
たとえばコメント欄に、攻撃者が「スクリプト入りの文字列」を書き込む。サービスがそれをそのまま画面に表示すると、そのページを見た人のブラウザで、そのスクリプトが実行されてしまいます。
結果、Cookie(ログイン状態)を盗まれる、勝手に操作される、などの被害が起きます。
アニメーション『XSSの流れ(仕込み→表示→実行)』を開く
どう防ぐ?
- 出力エスケープ — 画面に出すとき、
<や>などを「ただの文字」に変換する。これでスクリプトとして動かない - 文脈に合わせる — HTML・属性・URL・JS の中で、必要なエスケープが違う
- CSP(コンテンツセキュリティポリシー) — そもそも許可していないスクリプトの実行を、ブラウザ側で止める
ポイントは「入力を消すのではなく、出力を安全にする」こと。データは受け取ってよく、出す瞬間に無害化します。
⚠️ 気をつける
- 入力検証だけに頼る — 保存された値が別の画面で出るときに漏れる(格納型XSS)
- エスケープの文脈ミス — HTML用のエスケープをURLやJSにそのまま使う
- innerHTML の乱用 — 受け取った文字列をそのままHTMLとして挿入しない
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. XSSの基本的な防ぎ方は?
問2. XSS(クロスサイトスクリプティング)が悪用するのは?
問3. XSS の正式名称をカタカナで答えてください(クロスサイト…)。
問4. XSSが成功したときに起きやすい代表的な被害はどれ?
問5. 出力時にエスケープすると、`<script>` のような文字列はどうなる?
問6. XSS対策の考え方として正しいのはどれ?
問7. そもそも許可していないスクリプトの実行を、ブラウザ側で止める仕組みはどれ?
問8. 保存された値が後で別の利用者の画面に出て発火するXSSの種類を何という(漢字+型)?