资源 · 116
postMessage:验证来源、窗口与请求命令
为iframe或弹出窗口建立消息契约,拒绝意外发送方和数据。
已更新 · 2 min
本指南有助于实现的目标
- 定义通信双方与类型
- 产生效果前验证
- 测试导航和契约外消息
快速检查
- 来源、窗口、类型和最少数据契约。
- 验证顺序与无业务效果的拒绝。
- 拒绝矩阵与监听器清理。
分步指南
- 1
定义通信双方与类型
列出准确允许的origin、预期窗口引用及有用消息类型。敏感数据使用明确targetOrigin。origin包含协议、主机和端口;在域名中查找子字符串不能验证对方。
来源、窗口、类型和最少数据契约。
- 2
产生效果前验证
比较event.origin,并在此窗口集成中比较event.source与预期窗口。验证结构、允许值和操作状态。作为数据处理,不执行eval或插入HTML。允许的来源不替代服务器授权。
验证顺序与无业务效果的拒绝。
- 3
测试导航和契约外消息
测试相似域名、不同端口、同源其他窗口、无效字段及关闭后消息。移除多余监听器,使已结束通信失效。窗口导航后,回复仍使用预先批准的origin。
拒绝矩阵与监听器清理。
可复现的验收案例
虚构示例:数据不代表客户或实际观察结果。
查看案例输入
{
"allowed_origin": "https://widget.example",
"observed_origin": "https://widget.example",
"expected_window": "active_iframe",
"observed_window": "another_window",
"payload_schema_valid": true,
"expected": "reject_without_effect"
}预期判断
虚构例:https://widget.example已获允许,但event.source是其他窗口。契约要求活动iframe窗口,因此拒绝消息且不发出命令。
您的验收笔记
按本指南的标准记录观察。记录不等于认证。
笔记不会自动保存。离开前请导出。
筛选不会限制导出。行动包括问题及未检查标准。
导入将在您确认后替换当前观察。
管理指标
| 指标 | 衡量内容 | 首要行动 |
|---|---|---|
| 拒绝意外案例 | 无效果拒绝的负面案例 / 已执行负面案例 | 记录来源、窗口及状态 |
| 完成允许通信 | 完成的预期场景 / 已测试预期场景 | 区分收到消息与确认效果 |
常见错误
常见问题解答
检查event.origin就够了吗?
不够。还需检查窗口、结构和状态。服务器仍须验证请求操作的权限。
官方参考文献
参考文献支持该方法。 请根据您的实际情况调整检查;它们并非认证。 原始参考文献标题和源文档可能使用其他语言。
参考资料查阅日期 .






