从 AWS S3 存储桶上的 html 文件中弹出 Window postMessage()

Pop Up Window postMessage() from html file on AWS S3 Bucket

我正在使用 javascript 启动弹出窗口 window。这是一个关于弹出 window 和它的 parent window 使用 javascript "postMessage()" 之间的跨域消息传递的安全问题。

弹出 window 的 html 文件驻留在 AWS 上。 parent window 位于不同的域中。

因此,用户访问 parent window,单击按钮时,弹出窗口 window 从 AWS 启动。然后,弹出 window 通过 "postMessage()" 与 parent window 通信。

在 parent window 中,我将域设置为仅接收来自此 url 的邮件:https://s3.amazonaws.com 如下所示:

if(e.origin != 'https://s3.amazonaws.com') {
   return;
}

如果您能回答这些问题中的任何一个,将会很有帮助。非常感谢你。这是否意味着来自此 url 的所有文件都可以向我的 parent window 发送消息?这是安全风险吗?有没有一种方法可以指定只有来自我在 AWS 上的特定 HTML 文件的消息才被接受?我应该尝试在我的雇主拥有和维护的内部服务器上托管弹出 html 文件吗?

谢谢。

是的,message 事件可以侦听来自不同浏览上下文的消息。开发人员有权利和责任对消息的来源和应该预期的消息的特定值进行充分检查。

一个选项是将打开的 windowname 设置为唯一的字符串,将名称传递给 window.opener 并检查 name 是否等于提供给 window.open()

的唯一 name