使用 window.postMessage 发送敏感数据是不是安全?
Posted
技术标签:
【中文标题】使用 window.postMessage 发送敏感数据是不是安全?【英文标题】:Is it safe to send the sensitive data with window.postMessage?使用 window.postMessage 发送敏感数据是否安全? 【发布时间】:2021-07-29 02:32:16 【问题描述】:假设,我已经设置了两个不同的域,例如:
https://test1_example.com/
https://test2_example.com/
Test1 有一个带有 test2 站点 src 的 iframe。
我想将用户名和密码从 test1 传递到 test2 站点,但我担心在此过程中是否有人会通过网络捕获敏感数据。 我应该在使用 window.postMessage 之前对其进行加密吗?因为我不确定 postMessage 通信是否会通过 Internet,或者只是浏览器窗口通信。
【问题讨论】:
如果通过 HTTPS 连接,数据将被加密。你担心的是man in the middle attack。 【参考方案1】:数据不会通过网络。
它可以采取的最广泛的路线是IPC,(可能在你的情况下,因为跨域文档的线程隔离非常有效地对抗时间攻击à la Spectre),它仍然完全在计算机内部。 如果恶意脚本可以截获这一点,他们可能会更轻松地读取两个页面的内容。
但这并不意味着你可以不小心通过postMessage()
发送敏感数据,远非如此。
发送敏感数据时,您必须确保与您希望与之通信的页面进行通信。与您预期不同的页面可能会尝试与您的页面进行通信。
始终将postMessage( msg, origin, [transferrable] )
的origin
参数设置为您要与之通信的页面的来源。 切勿使用"*"
,除非您确定数据是不敏感,而且你正在赶时间做一些测试.
同样,始终检查收到的 MessageEvent 的 .origin
。如果您不认识它,请忽略该消息。
【讨论】:
【参考方案2】:我建议不要在网站上发布敏感数据,除非您对此有把握。
【讨论】:
提供的答案含糊不清并使用概括以上是关于使用 window.postMessage 发送敏感数据是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章
Internet Explorer 11 中的 window.postMessage 是不是有最大长度限制?
window.postMessage VS window.chrome.webview.postMessage
使用window.postMessage进行iframe跨域数据通信
HTML5中window.postMessage,在两个页面之间的数据传递