見えるセキュリティ

反射型XSS

REFLECTED XSS

この概念とは?

反射型XSSとは、URLなどから送られた入力をWebサイトが適切に処理せず、その入力を含んだページをそのまま返してしまうことで、悪意あるスクリプトが利用者のブラウザ上で実行される脆弱性です。攻撃者は細工したURLなどへ利用者を誘導し、正規サイト上で攻撃コードを実行させます。

同じ入力が、ただの文字列として表示されるか、ブラウザで命令として解釈されるか。その分かれ目を、入力の居場所と形の変化で追います。

THEME
web-vuln
KIND
attack
REVIEW
self-reviewed ·

反射された入力がコードとして解釈される流れ

入力がどこにあり、閲覧者のブラウザでどの形へ変わるかに注目します。

図の読み方

時間は上から下へ ↓ /「次へ」で1 STEPずつ表示

攻撃者

細工した入力を用意する

閲覧者のブラウザ

レスポンスを解釈する

Webサーバー

入力をレスポンスへ反映する

  1. STEP 1細工した入力を用意する

    攻撃者で:

    入力例(模式表現)

    こんにちは(表示を書き換える指示を含む入力)

この図について

表示は概念図です。コード例の実行や実サイトへの送信は行いません。安全化の流れは、HTML本文へ文字として出力する場面を扱います。入力例の括弧内は、表示を書き換える処理を日本語で表した模式表現です。この日本語自体が実行されるわけではありません。HTML表記例の「…」は、その処理を省略しています。

STEP 01 / 5

細工した入力を用意する

STEP 1 / 5: 細工した入力を用意する

現在のSTEP 1STEP 2STEP 3STEP 4STEP 5

攻撃者が、正規サイトへ送るURLやリクエストに、ブラウザでコードとして解釈され得る文字列を含めます。

パネルの開閉ではSTEPは変わりません。

この概念の要点

  • 要点

    反射型は保存を成立条件としない

    反射型XSSでは、リクエスト由来の入力が、そのリクエストに対応するレスポンスなどへ反映され、ブラウザでコードとして解釈されます。サーバーへの継続的な保存は成立条件ではありません。保存された入力が後の閲覧時にも配信される蓄積型XSS(保存型XSS)とは、攻撃入力がレスポンスへ届く経路が異なります。

  • 注意

    危険になる境界はブラウザでの解釈

    文字列そのものだけで危険性が決まるのではなく、入力がレスポンス内のどの文脈へ置かれ、ブラウザにデータかコードのどちらとして解釈されるかが重要です。

理解確認

反射型XSSで、入力が実際の危険へ変わる決定的な瞬間はどれですか?

参考資料

RELATED CONCEPTS