Hello there, ('ω')ノ
🪞 1. Reflected XSS(反射型XSS)
特徴:
- 攻撃コードが即時にレスポンスに反映される
- 被害者が特定のURLを踏むことで発生する
- 一度きりの攻撃
例:
攻撃者が次のようなリンクを作成:
https://example.com/status?message=<script>alert(1)</script>
このリンクを被害者がクリックすると、ブラウザが以下のようにレンダリング:
<p>Status: <script>alert(1)</script></p>
結果として、JavaScriptが実行される。
🗂 2. Stored XSS(保存型XSS)
特徴:
- 攻撃コードがサーバに保存される
- 他のユーザーがアクセスしたときに自動的に実行される
- 最も危険なタイプ
例:
掲示板やチャットで次のようなコメントを投稿:
<script>alert('XSS');</script>
他のユーザーがそのコメントを見た瞬間、スクリプトが実行される。
🧠 3. DOM-based XSS(DOM型XSS)
特徴:
- 攻撃はクライアント側のJavaScriptで発生
- サーバは攻撃コードに関与しない
- 主に
innerHTML
やdocument.write()
などが使われている
例:
var q = location.hash.substring(1); document.getElementById("output").innerHTML = "検索結果: " + q;
被害者が以下のURLを開くと:
https://example.com/#<img src=1 onerror="alert(1)">
HTMLに次のように表示され、スクリプトが実行される:
検索結果: <img src=1 onerror="alert(1)">
🔍 まとめ:違いを比較
種類 | スクリプトの出所 | 実行タイミング | 例 |
---|---|---|---|
Reflected | URLなどのリクエスト | 即時実行 | 攻撃URLをクリックした時 |
Stored | サーバー上の保存データ | 他のユーザーが閲覧時 | 掲示板、チャットメッセージ |
DOM-based | クライアント側JS | ページ読み込み時 | URLのハッシュなど |
Best regards, (^^ゞ