Javascript postMessage目标来源-window.parent.origin vs"*&引用;

Javascript postMessage目标来源-window.parent.origin vs"*&引用;,javascript,postmessage,Javascript,Postmessage,window.parent.postMessage(message,window.parent.origin)比window.parent.postMessage(message,'*')更安全吗 我们有一个由父帧加载的iframe组件。该框架可以来自任何地方(我们的web应用程序是一个共享组件,可以从主产品的任何客户端安装访问)。因此,我们无法提前知道谁加载了我们,除非我们保留某种数据库,其中包含我们不知道的允许来源 我们正在向父帧发送一个postMessage(),我们无法预先知道目标源,因

window.parent.postMessage(message,window.parent.origin)
window.parent.postMessage(message,'*')更安全吗

我们有一个由父帧加载的iframe组件。该框架可以来自任何地方(我们的web应用程序是一个共享组件,可以从主产品的任何客户端安装访问)。因此,我们无法提前知道谁加载了我们,除非我们保留某种数据库,其中包含我们不知道的允许来源

我们正在向父帧发送一个
postMessage()
,我们无法预先知道目标源,因此我将
“*”
。我的同事建议我改为使用
window.parent.origin
,但据我所知,这具有相同的效果-
postMessage
将检查目标来源是否与自身相同!更不用说它在跨域时失败了

我是不是遗漏了什么?使用
window.parent.origin
是否比通配符具有更高的安全性?

如果将父页面重定向到可能接收您的带有敏感数据的邮件的恶意站点,则通配符
“*”
可能会很危险


在这种特殊情况下,
parent.origin
不会提供任何安全好处。理想情况下,应该使用组件的服务器来检测和验证父窗口的来源

如果您不提供具体的来源,我可能会将您的组件嵌入到我的页面中,然后我的页面将接收您通过postMessage发送的任何内容-这是否会泄漏敏感数据,由您确定。(当然,简单地从父级获取源代码也不能解决这个问题。)确切地说,
window.parent.origin
选项确实会将您限制在自己的域内,因此它会更安全,但可能不是您想要的。难道你不能设置一些API密钥系统,使用你的组件的页面可以发布吗?
parent.origin
如何更安全?我的意思是这就是这里要问的问题。在这种特殊情况下,
parent.origin
不会提供任何安全好处。理想情况下,应该使用组件的服务器来检测和验证父窗口的来源。