使用 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,在两个页面之间的数据传递

在 Swift WKWebView 中捕获 window.postMessage

使用window.postMessage()方法跨域通信