Chrome扩展上下文传数据:chrome.local.storage与chrome.runtime.sendMessage哪个更安全?
两种Chrome扩展跨上下文数据传输方案的安全性对比
1. chrome.local.storage方案的安全风险
- 全局共享易泄露:chrome.local.storage是扩展内全局共享的存储,任何拥有读取权限的上下文(比如其他内容脚本、后台脚本)都能访问其中的数据,无法确保只有目标接收方获取到传输内容。
- 数据残留隐患:即使处理完成后将存储变量设为null,一旦接收方监听失败、进程崩溃等异常情况发生,敏感数据会持续留在存储中,可能被扩展内的其他代码(或漏洞利用代码)读取。
- 无接收方校验机制:写入存储的事件是广播式的,所有监听
chrome.storage.onChanged的上下文都能触发处理逻辑,无法精准限制数据流向。
2. chrome.runtime.sendMessage方案的安全优势
- 精准的数据流向控制:可以指定消息的接收目标(比如通过
tabId定向到特定页面的内容脚本,或仅发送给后台脚本),只有匹配的上下文能接收并处理数据,从根源上减少无关方获取数据的可能。 - 无持久化残留:消息是即时传输的临时数据,不会在本地存储中留下痕迹,传输完成后数据不会继续存在于公共存储空间。
- 身份校验能力:在接收消息时,可以通过
sender对象(如sender.tab.url、sender.id)验证发送方的合法性,确保仅处理来自信任上下文的数据,进一步降低风险。
结论
针对传输任意内容(含潜在敏感数据)的表单自动填充场景,chrome.runtime.sendMessage是安全性更高的选择。它解决了local.storage方案的全局共享、数据残留问题,同时提供了更精准的权限控制,能有效降低数据泄露的风险。
内容的提问来源于stack exchange,提问作者JLowther
相关产品推荐
相关产品推荐

