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

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

最佳答案

本身并不是风险。这仅意味着任何人都可以将您的内容嵌入框架中,并读取您通过API发送的消息。如果该信息可以安全地信任任何人,那很好。如果应该在您的站点,访问者站点和特定合作伙伴站点之间保留私有(private)数据,那么您应该对消息的内容更加信任谁。

明确允许请求来自任何来源,实际上与使用“*”相同。如果数据需要保密,则应根据来源白名单进行过滤。

10-06 04:35