背景:
我写了一个扩展来搜索书签并为用户打开 URL。
我已经为扩展添加了 JavaScript 小书签支持,现在它通过类似于以下代码的方式调用脚本:
var bookmark_address; // the address containing javascript:blah();
var js = bookmark_address.substr(11);
chrome.tabs.executeScript({'code': js});
以前我一直在使用这段代码:
var bookmark_address; // the address containing javascript:blah();
chrome.tabs.update({'url': bookmark_address});
第一个似乎更好,但实际上它们并没有太大区别。他们都需要权限["tabs", "<all_urls>"]
。我现在仅在用户选择启用书签支持(通过可选权限)时才请求权限。
问题:
我只是想到了安全问题。书签是由用户添加的,因此它们通常是安全的,但是因为我的扩展程序“调用”了脚本,所以它是在我的扩展程序的上下文中执行的。该脚本将能够弄乱我的扩展程序的本地存储和变量。此外,执行的脚本可能具有执行 Cross-Origin 的权限XMLHttpRequest
。 (文档)
我的想法正确吗?真的有安全问题吗?有没有办法从我的扩展程序“沙箱”执行脚本,和/或禁用脚本的权限?
对于扩展程序的用户来说,这可能是一件非常糟糕的事情,所以请认真考虑这个问题。