Chrome扩展中后台脚本与注入iframe间JWT持久化方案咨询
问题描述
我正在开发一款Chrome扩展,通过独立于当前访问网站DOM的弹窗UI完成登录。计划注入一个iframe,要求其内容不可被读取,且不想将UI放在弹窗内,而是要附着在右上角的Chrome扩展图标附近。
已通过后台脚本完成安全登录并获取JWT,需要将JWT传入已知src属性的iframe中,但暂未找到安全的传递方式。此外,iframe会被创建和销毁,而登录状态需要跨多个会话保持,而非仅在每次注入iframe时有效。
注:该应用仅用于个人记笔记,暂不考虑iframe被伪造或遮盖的情况。
更新记录
- 更新1:考虑通过后台脚本与iframe间建立通信桥接,将JWT保存在后台脚本中,由后台脚本调用API,但不确定是否可行,且知道
postMessage并不安全。 - 更新2:打算采用短码方案:在下拉菜单中完成完整登录后生成带有效期限的短码(不复制到剪贴板),再在注入的iframe中使用该短码。
- 更新3:认为
service worker/web_accessible_resources或许是可行方案。 - 更新4:纠正根本性误解:
- 测试发现,无论是远程源URL的iframe,还是src为
chrome-extension://long-string...的Chrome注入iframe,在开发者工具控制台中可通过document.get或window.find('string')找到内容,但网页自身执行的JavaScript无法获取任一iframe的内容(因同源策略限制),这让我稍感安心。 - 意识到混淆了Shadow DOM与iframe的用途:Shadow DOM偏向样式隔离的沙箱,可用于确保非远程src的iframe不会被页面移除;而iframe是完全沙箱化的独立文档。
- 测试发现,无论是远程源URL的iframe,还是src为
内容的提问来源于stack exchange,提问作者Jacob David C. Cunningham
相关产品推荐
相关产品推荐

