postMessage目标原点 - window.parent.origin vs“*”

时间:2018-04-17 08:06:17

标签: javascript postmessage

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

我们有一个由父框架加载的iframe组件。该框架可以来自任何地方(我们的Web应用程序是一个共享组件,可以从我们主要产品的任何客户端安装访问)。所以我们事先不知道是谁装载了我们,除非我们保留某种我们没有的允许来源的数据库。

我们正在向父框架发送postMessage(),我们无法事先知道目标来源,所以我放了'*'。我的同事建议我使用window.parent.origin代替,但据我所知,这具有相同的效果 - postMessage将检查目标原点是否与自身相同!更不用说它在跨域时失败了。

我在这里错过了一些东西吗?使用window.parent.origin使用比通配符更高的安全性吗?

1 个答案:

答案 0 :(得分:1)

如果父网页被重定向到可能会收到包含敏感数据的邮件的恶意网站,则通配符"*"可能会很危险。

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