2015-09-21 70 views
2

我很难理解对postMessage()方法的targetOrigin使用通配符时的安全问题。您调用postMessage()的窗口是否已经有我们发送数据的来源?有人会如何干预?使用window.location.origin将targetOrigin设置为窗口的原点会不好?为什么使用'*'作为postMessage的targetOrigin存在安全风险?

我明白在接收端检查事件源的重要性(如图所示here),但似乎无法包装我的头,为什么当发送端使用通配符作为targetOrigin时,该窗口已具有特定的来源。

回答

4

这本身并不是一个风险。这只是意味着任何人都可以将您的内容嵌入到框架中,并阅读您通过API发送的消息。如果信息可以安全地信任任何人,那很好。如果数据应该在您的网站,访问者和特定合作伙伴网站之间保持私密性,那么您应该对消息内容信任的人更加谨慎。

显式给予请求来自的任何来源的权限实际上与使用'*'相同。如果数据需要保密,您应该过滤原始白名单。

相关问题