javascript – 为什么使用’*’作为postOessin的postOessin存在安全风险?

当使用通配符作为postMessage()方法的targetOrigin时,我很难理解安全问题.你调用postMessage()的窗口是否已经有我们发送数据的原点?怎么会有人干涉?使用window.location.origin将targetOrigin设置为窗口的原点是不是很糟糕?

我理解在接收端检查事件源的重要性(如图所示here),但我似乎无法理解为什么当窗口已经有了发送端使用通配符作为targetOrigin时不好特定的起源.

解决方法:

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

明确授予请求来自的任何来源的权限实际上与使用’*’相同.如果数据需要保密,则应过滤原始白名单.

上一篇:javascript – 卡在postMessage和MessageChannel中


下一篇:javascript – 如何在iframe中使用postmessage将用户重定向到主文档上的页面