JavaScript 文字列コンテキスト脱出
script ブロック内の文字列、JSON 初期状態、inline event code からユーザー入力が脱出できるか確認します。
HTML payload テスト
このシナリオは iframe sandbox ではなく、ユーザー入力が HTML/DOM にどう描画されるかを検証します。
- ユーザー入力を script ブロックへ直接書き込んでいないか確認
- 安全な JSON 直列化が </script> 終了トークンまで処理するか確認
- JavaScript 文字列コンテキストを HTML エンコードだけで守っていないか確認
Payload
コピーする payload
値が JavaScript 文字列リテラル内に挿入される場合の検証用。
プレビュー
このプレビューは学習用に意図的に unsafe rendering を行います。実サービスでは payload はテキストとしてエスケープされるか除去されるべきです。
ログ
// ログなし
解説
- XSS 防御では出力コンテキストが重要です。
<script>window.__DATA__ = "..."</script>のような位置では JavaScript 文字列用のエンコードが必要です。 </script>は JavaScript 文字列内にあっても HTML parser には script 終了トークンとして扱われ得ます。- できるだけ script ブロックに信頼できない値を置かず、JSON API や DOM の text/attribute API で分離して描画します。