我的客户端代码正在从另一个窗口(iframe)接收消息——类似这样的东西(我们称之为page1
,或https://my.site/page1
):
window.addEventListener("message", function(event) {
if (event.origin !== ALLOWED_ORIGIN) {
return;
}
// Further logic here
});
iframe 应该指向与 同源的另一个 URL page1
,例如https://my.site/page2
,在某个点,page2
客户端 JS 执行:
window.top.postMessage(somePayload);
我的目标是确保无论 iframe 最终指向何处(可能是由于我没有注意到的被利用漏洞),我page1
只接受从我的域上的 URL 发送的消息。
我正在考虑使用window.origin
as ALLOWED_ORIGIN
on page1
。这似乎比必须从某种配置文件中传递我的域本身要容易,我必须为所有不同的开发、测试环境以及最终的产品进行更改。
但是,我找不到其他人使用这种方法的例子,也找不到任何解释为什么它不够好。
被event.origin !== window.origin
认为不够安全,最重要的是,为什么?
如果这是显而易见的事情,我深表歉意,并感谢您阅读此问题!