Hello there, ('ω')ノ
🎯 攻撃者が可能なこと
攻撃者がユーザーのブラウザでスクリプトを実行できると、次のような操作が可能になります:
- セッションハイジャック(クッキーを盗んで乗っ取り)
- フィッシング画面の表示(偽のログインフォームなど)
- 被害者になりすまして投稿や購入処理
- 内部情報(メールアドレス、支払い情報など)の窃取
🔁 保存型と反射型XSSの違い
特徴 | 反射型XSS | 保存型XSS |
---|---|---|
攻撃の発生タイミング | ユーザーが攻撃用URLにアクセスした瞬間 | ユーザーがアプリ内の該当ページを開いた時 |
攻撃の持続性 | 一時的(ページ遷移で終了) | 永続的(修正されるまで) |
攻撃の拡散 | 外部誘導が必要(URLをクリックさせるなど) | 自動で全ユーザーに拡散される |
保存型XSSは、アプリケーション内部に攻撃コードが保存されるため、攻撃者がユーザーを誘導する必要がなく、被害者がそのページを閲覧するだけで攻撃が成立します。
🧠 特に危険なケース
- ログイン状態のユーザーのみが影響を受ける場合、保存型XSSの方が成功率が高くなります。攻撃タイミングを狙う必要がないからです。
- 管理者などの権限が高いユーザーがXSSに引っかかると、システム全体の乗っ取りに繋がるケースもあります。
🛡 対策
- ユーザーからの入力をHTMLエスケープ(サニタイズ)する
- コンテンツセキュリティポリシー(CSP)の導入
- JavaScriptでのDOM操作を安全に行う
- Webアプリケーションファイアウォール(WAF)の活用
保存型XSSは、一度仕込むだけで持続的に複数のユーザーを攻撃できる非常に危険な脆弱性です。開発時は、あらゆるユーザー入力の扱いに注意する必要があります。
Best regards, (^^ゞ