【问题标题】:Why is using '*' as the targetOrigin for postMessage a security risk?为什么使用 '*' 作为 postMessage 的 targetOrigin 存在安全风险?
【发布时间】:2015-12-18 14:44:41
【问题描述】:

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

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

【问题讨论】:

    标签: javascript security cross-domain xss postmessage


    【解决方案1】:

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

    明确授予请求来自的任何来源的权限实际上与使用“*”相同。如果数据需要保密,您应该过滤来源白名单。

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 2015-11-10
      • 2011-03-31
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      相关资源
      最近更新 更多