我正在使用
window.parent.postMessage(message, '*')
向外部网站发送不私有/敏感的数据(消息是 iframe 应该的高度,即重要的是,它不是用户信息或类似的敏感信息)。
使用
'*'
表示 targetOrigin
意味着 任何 站点都可以拦截该 message
。
由于(就我而言)
message
不敏感,因此这不会直接带来任何安全风险,尽管不是最佳实践。
我必须非常小心,不要忘记这一点,并在将来通过消息发送敏感数据。只要我小心不要这样做,这种方法在技术上就是完全安全的(尽管不是最佳实践)。
我的理解正确吗?
我对此完全陌生,但看来上述问题中概述的理解确实是正确的;至少根据this精彩的问答,关键是:
这本身并不是风险。这只是意味着任何人都可以将您的内容嵌入框架中并阅读您通过 API 发送的消息
基本上,
*
作为targetOrigin意味着任何网站都可以看到您发送的数据(message
),所以只要它不是敏感/私人/机密的内容就可以了。
这不是最佳实践的原因是,您或其他开发人员将来可能会发送敏感信息,并且可能没有意识到
targetOrigin
对任何人开放,因此可能会泄露机密数据。因此,为什么将 targetOrigin
仅锁定到您打算允许访问正在发送的数据的站点在技术上不是必需的,但却是最佳实践。