window.parent.postMessage(message, window.parent.origin)
比window.parent.postMessage(message, '*')
更安全吗?
我们有一个被父级框架加载的iframe组件。该框架可以来自任何地方(我们的Web应用程序是共享组件,可以从我们主产品的任何客户端安装中访问)。因此,除非我们保留某种允许来源的数据库,否则我们无法事先知道谁加载了我们。
我们正在向父级框架发送postMessage()
,并且我们无法事先知道目标来源,因此我使用了'*'
。我的一位同事建议我改用window.parent.origin
,但据我所知,这具有相同的效果-postMessage
将检查目标来源是否与自身相同!更不用说跨域时会失败。
那么我错过了什么吗?使用window.parent.origin
是否比通配符提供更高的安全性?
window.parent.origin
选项确实会限制您自己的域,因此是更安全的选择,但可能不是您想要的。您不能设置一些API密钥系统,以便使用您组件的页面可以发布吗? - Kaiido