【发布时间】:2018-08-07 10:23:41
【问题描述】:
我正在开发一个 chrome 扩展,它是基于标签的,所以我正在使用 chrome.tabs API。
有一个 master 选项卡在其中执行我经过验证的安全 JS 代码,并且它可以打开其他 child 选项卡,其中一些 JS 代码(不需要验证/保护)执行。
我需要控制我打开的 child 标签的授权。 children 选项卡应该只能使用chrome.tabs.sendMessage 发送消息。目前他们可以访问chrome 和chrome.tabs API 的所有功能(移动标签、复制标签、打开新窗口等...),就我的扩展而言,这是一个开放的 XSS 漏洞。
问题:是否可以限制新创建标签的权限?还是默认所有的tab都拥有所有的权限,没办法控制?
见https://developer.chrome.com/extensions/tabs#method-create
我想要以下内容:
const tab = chrome.tabs.create({ restrictedMethods: ['chrome.tabs.sendMessage'] })
感谢您的帮助
【问题讨论】:
-
我的扩展就像一个迷你浏览器,你输入一些 JS 资源的 URL,它会被加载并在另一个选项卡中执行。我无法控制 children 选项卡中执行的内容,JS 代码可以是一些 React JS 应用程序代码、一些简单的 vanilla JS 或任何其他前端 javascript。这就是为什么我必须确保在选项卡上下文中,无法访问
chromechrome.windows、chrome.tabsAPI。 -
到目前为止,我认为您必须使用沙盒 iframe,通过
sandboxHTML 属性或sandbox declaration in manifest.json。 -
在我的主标签中: fetch(URL_OF_SOME_JS_CODE_ENTERED_BY_USER).then(code => { chrome.tabs.create({ url 'app.html' }, (tab) => { chrome.tabs.sendMessage (tab.id, 代码) }); }); app.html 文件: app.js 文件: chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { eval(request.code); }); );
-
好的,非常感谢,这正是我需要的:)
标签: google-chrome google-chrome-extension