history.pushState 汚染
iframe 自身の history entry を積み上げ、親タブの戻る操作を妨害します。
sandbox ポリシー別の挙動
| ポリシー | 想定結果 |
|---|---|
| sandbox 未指定 | 動作 |
sandbox="allow-scripts" | 動作 |
sandbox="" (最も厳格) | ブロック |
Embed スニペット
このスニペットは埋め込み専用ページを使用します。自サービスに貼り付けてレンダリング/ブロックの挙動を確認してください。
<iframe src="https://xss-playground.com/embed/history-pollution?lang=ja" title="XSS Playground - history.pushState 汚染" width="600" height="420" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
実行
// ログなし
解説
- iframe の pushState は自分の origin URL だけを変えますが、その entry は親タブの back stack に積まれます。ユーザーが前のサービス画面へ戻ろうとしても iframe history を巡回することがあります。
- 攻撃価値は主に annoyance / ユーザーをページに閉じ込める用途です。
sandbox=""なら JS がブロックされ、この攻撃も止まります。allow-scriptsだけでは history API は自由に呼べます。