Shikata Ga Nai

Private? There is no such things.

XSS攻撃の種類とその仕組み

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で発生
  • サーバは攻撃コードに関与しない
  • 主にinnerHTMLdocument.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, (^^ゞ