コンテンツ
💥 XSSとは?
XSS(Cross-Site Scripting)
Webページに悪意あるJavaScriptを埋め込まれてしまう脆弱性
💡 かんたんに言うと
掲示板などで、本来はこう表示したい:
こんにちは!
でも攻撃者が:
<script>alert('hacked')</script>
のようなコードを投稿すると…
👉 それを見たユーザーのブラウザで スクリプトが実行される
🔥 何が危険?
攻撃者は:
- Cookieの盗み取り
- セッションハイジャック
- 偽フォーム表示
- パスワード入力の窃取
- 勝手な操作実行
などが可能になります。
🧠 なぜ起きる?
サーバー側が:
<div>
{{ user_input }}
</div>
のように 入力値をそのまま出力 しているのが原因。
HTMLエスケープしていない。
🧨 XSSの種類
① Stored XSS(保存型)
悪意あるスクリプトがDBに保存される
→ 他のユーザー全員に影響
例:掲示板、プロフィール欄
② Reflected XSS(反射型)
URLパラメータに仕込む
→ 被害者がリンクを踏むと発動
例:
https://example.com/search?q=<script>...</script>
③ DOM-based XSS
JavaScriptの処理ミスで発生
サーバーではなくフロントエンド側の問題
🛡 対策
- 出力時エスケープ(最重要)
- CSP(Content Security Policy)
- HttpOnly Cookie
- 危険なinnerHTML使用禁止
- 入力バリデーション
🎯 一言まとめ
XSS = 「他人のブラウザで勝手にJavaScriptを実行させる攻撃」
🆚 これまでとの違い
| 脆弱性 | 攻撃対象 |
|---|---|
| IDOR | サーバーデータ |
| File Inclusion | サーバーファイル |
| SSRF | 内部ネットワーク |
| XSS | ユーザーのブラウザ |