XSS — 他人のブラウザで悪いスクリプトを動かす攻撃

初級の解説は準備中のため、初級の内容を表示しています。

概要 — まず全体をつかむ

XSS(クロスサイトスクリプティング)は、他人のブラウザで、攻撃者のスクリプトを動かす攻撃です。

詳細 — 1段階ずつ追う

どう起きる?

たとえばコメント欄に、攻撃者が「スクリプト入りの文字列」を書き込む。サービスがそれをそのまま画面に表示すると、そのページを見た人のブラウザで、そのスクリプトが実行されてしまいます。

結果、Cookie(ログイン状態)を盗まれる、勝手に操作される、などの被害が起きます。

アニメーション『XSSの流れ(仕込み→表示→実行)』を開く
XSS ― 他人のブラウザで、攻撃者のスクリプトが動く投稿表示① 攻撃者悪意のある投稿者投稿欄・コメント欄などに「悪いスクリプト」を紛れ込ませて送信する例: <script>…盗む…</script>② サイトエスケープを忘れた受け取った文字列をそのまま他の利用者のページに表示してしまう=スクリプトが混ざる③ 被害者のブラウザ普通に見ただけページを開いた瞬間にそのスクリプトが実行→ Cookie・セッションを盗む/勝手に操作する🛡 防御出力を文脈に応じてエスケープ(HTML/属性/URL/JSで変換)+ CSP で、許可していないスクリプトの実行をブラウザ側で止めるひとことで言うと ― 他人のブラウザで悪いJSを動かす攻撃

どう防ぐ?

  1. 出力エスケープ — 画面に出すとき、<> などを「ただの文字」に変換する。これでスクリプトとして動かない
  2. 文脈に合わせる — HTML・属性・URL・JS の中で、必要なエスケープが違う
  3. CSP(コンテンツセキュリティポリシー) — そもそも許可していないスクリプトの実行を、ブラウザ側で止める

ポイントは「入力を消すのではなく、出力を安全にする」こと。データは受け取ってよく、出す瞬間に無害化します。

⚠️ 気をつける

  • 入力検証だけに頼る — 保存された値が別の画面で出るときに漏れる(格納型XSS)
  • エスケープの文脈ミス — HTML用のエスケープをURLやJSにそのまま使う
  • innerHTML の乱用 — 受け取った文字列をそのままHTMLとして挿入しない

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. XSSの基本的な防ぎ方は?

2. XSS(クロスサイトスクリプティング)が悪用するのは?

3. XSS の正式名称をカタカナで答えてください(クロスサイト…)。

4. XSSが成功したときに起きやすい代表的な被害はどれ?

5. 出力時にエスケープすると、`<script>` のような文字列はどうなる?

6. XSS対策の考え方として正しいのはどれ?

7. そもそも許可していないスクリプトの実行を、ブラウザ側で止める仕組みはどれ?

8. 保存された値が後で別の利用者の画面に出て発火するXSSの種類を何という(漢字+型)?

XSS — 他人のブラウザで悪いスクリプトを動かす攻撃 | Kotowary