postMessage 欺骗
通过 parent.postMessage 向父页面发送伪造消息,检查是否缺少 origin 校验。
按 sandbox 策略的行为
| 策略 | 预期结果 |
|---|---|
| 无 sandbox | 通过 |
sandbox="allow-scripts" | 通过 |
sandbox="" (最严) | 阻止 |
Embed 代码
此代码使用专用嵌入页面。粘贴到您的服务后检查渲染或拦截行为。
<iframe src="https://xss-playground.com/embed/post-message?lang=zh" title="XSS Playground - postMessage 欺骗" width="600" height="420" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
执行
target origin
// 无日志
说明
- postMessage 是设计用于 cross-origin 通信的 API。SOP 不会阻止它,因此父页面必须验证 event.origin。
- 如果父页面为支付组件、iframe-resizer、YouTube IFrame API 等集成保留了 message listener,模仿这些格式就会成为攻击面。
- 防护需要验证
event.origin,并校验消息 type/schema。在 sandbox 中,只有sandbox=""会阻止 postMessage 本身。