見えるセキュリティ
反射型XSS
反射型クロスサイトスクリプティング / REFLECTED XSS
同じ入力が、ただの文字列として表示されるか、ブラウザで命令として解釈されるか。その分かれ目を、入力の居場所と形の変化で追います。
- THEME
- web-vuln
- KIND
- attack
- REVIEW
- self-reviewed ·
反射された入力がコードとして解釈される流れ
入力がどこにあり、被害者のブラウザでどの形へ変わるかに注目します。
- 現在のSTEP
攻撃者
細工した入力を用意する
持ち物
- <script>…</script>
Webサーバー
入力をレスポンスへ反映する
持ち物
—
被害者のブラウザ
レスポンスを解釈する
持ち物
—
STEP 01 / 05DERIVE
1. 細工した入力を用意する
攻撃者が、正規サイトへ送るURLやリクエストに、ブラウザでコードとして解釈され得る文字列を含めます。
現在のSTEP 1STEP 2STEP 3STEP 4STEP 5
この概念の要点
要点
反射型は保存を成立条件としない
反射型XSSでは、リクエスト由来の入力が、そのリクエストに対応するレスポンスなどへ反映され、ブラウザでコードとして解釈されます。サーバーへの継続的な保存は成立条件ではありません。保存された入力が後の閲覧時にも配信される保存型XSSとは、攻撃入力がレスポンスへ届く経路が異なります。
注意
危険になる境界はブラウザでの解釈
文字列そのものだけで危険性が決まるのではなく、入力がレスポンス内のどの文脈へ置かれ、ブラウザにデータかコードのどちらとして解釈されるかが重要です。
理解確認
参考資料
- IPA安全なウェブサイトの作り方 - 1.5 クロスサイト・スクリプティング
クロスサイト・スクリプティングの仕組みと対策
- OWASPCross Site Scripting Prevention Cheat Sheet
出力エンコーディングと安全な出力処理
- CWECWE-79: クロスサイトスクリプティング
CWE-79CWE-79の日本語分類とXSSの定義