Ale*_*exZ 1 javascript security postmessage google-chrome-extension content-script
根据MDN 上的这篇文章,使用 postMessage 在 chrome 中与内容脚本之间传递消息并不安全,因为无法正确定义源属性,并且其 targetOrigin 很难安全地传递到潜在的恶意站点。这仍然是真的吗?是否有其他方法可以确认收到消息的来源,并仅将消息发送到特定的内容脚本?或者除了完全使用内容脚本之外还有其他选择吗?
MDN 文章中的“chrome”并不是指“Google Chrome”,而是指以 Chrome 权限运行的扩展代码(看这里了解“chrome”在 Firefox 中的其他含义)。
在 Google Chrome / Chromium 中,内容脚本在与网页不同的环境中运行(这意味着内容脚本中的脚本与网页中的window脚本不同)。
但是,当您从内容脚本向页面发送消息时,将与页面的消息相同。因此,要验证消息是否确实是从同一页面内的(内容)脚本发送的,您可以使用windowevent.sourcewindowif (event.source === window) { ... }.
如果您想将消息发送到另一个内容脚本(在同一选项卡中),那么您有两个选择:
window使用top、parent、<HTMLIFrameElement>.contentWindow、frames[index]等引用其对象。将消息从一个内容脚本发送到另一个内容脚本的另一种(黑客)方法是通过 API chrome.storage。在接收端,绑定一个chrome.storage.onChanged事件。要“发送”消息,请使用chrome.storage.local.set。一旦您收到(未收到)消息,请不要忘记删除键值对。
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |