window.parent.postMessage(message, window.parent.origin)
比window.parent.postMessage(message, '*')
更安全吗?
我们有一个由父框架加载的iframe组件。该框架可以来自任何地方(我们的Web应用程序是一个共享组件,可以从我们主要产品的任何客户端安装访问)。所以我们事先不知道是谁装载了我们,除非我们保留某种我们没有的允许来源的数据库。
我们正在向父框架发送postMessage()
,我们无法事先知道目标来源,所以我放了'*'
。我的同事建议我使用window.parent.origin
代替,但据我所知,这具有相同的效果 - postMessage
将检查目标原点是否与自身相同!更不用说它在跨域时失败了。
我在这里错过了一些东西吗?使用window.parent.origin
使用比通配符更高的安全性吗?
答案 0 :(得分:1)
如果父网页被重定向到可能会收到包含敏感数据的邮件的恶意网站,则通配符"*"
可能会很危险。
在这种特殊情况下,parent.origin
不会带来任何安全方面的好处。理想情况下,组件的服务器应该用于检测和验证父窗口的来源。