【问题标题】: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,或者只是浏览器窗口通信。
【问题讨论】:
标签:
javascript
html
security
iframe
postmessage
【解决方案1】:
数据不会通过网络。
它可以采取的最广泛的路线是IPC,(可能在你的情况下,因为跨域文档的线程隔离非常有效地对抗时间攻击à la Spectre),它仍然完全在计算机内部。
如果恶意脚本可以截获这一点,他们可能会更轻松地读取两个页面的内容。
但这并不意味着你可以不小心通过postMessage()发送敏感数据,远非如此。
发送敏感数据时,您必须确保与您希望与之通信的页面进行通信。与您预期不同的页面可能会尝试与您的页面进行通信。
始终将postMessage( msg, origin, [transferrable] ) 的origin 参数设置为您要与之通信的页面的来源。 切勿使用"*",除非您确定数据是不敏感,而且你正在赶时间做一些测试.
同样,始终检查收到的 MessageEvent 的 .origin。如果您不认识它,请忽略该消息。
【解决方案2】:
我建议不要在网站上发布敏感数据,除非您对此有把握。