这是一个安全问题,我想避免通过chrome内容脚本注入代码,如何检测是否是这种情况?
假设:
content-script是恶意代码,因此它可能会避免消息传递响应。
答案 0 :(得分:4)
据我所知,这是不可能的。
内容脚本在称为孤立世界的特殊环境中执行
他们可以访问注入页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。
- 醇>
页面上运行的JavaScript无法调用任何函数或访问内容脚本定义的任何变量。
我相信#3告诉我们如果扩展程序不在我们的控制之下,我们不知道是否有一些内容脚本正在运行。
答案 1 :(得分:0)
您可以尝试将此类脚本添加到您自己的浏览器中,看看它是如何显示的。如果它确实出现在渲染的HTML中,那么也许可以用JavaScript检测它:
$('script').filter(function () {
var src = $(this).attr('src'),
result,
externalScripts = [];
if(src !== undefined){
//check for scripts which are not served from your domain
//you could also try just returning the scripts which have no src attribute
result = src.match(/^(?:https?:)\/\/expected.domain.com/);
if(result === null) {
externalScripts.push(src);
}
}
return externalScripts;
})
但很可能无法检测到,因为听起来Chrome脚本是沙盒。找出如何预防事情的最好方法是尝试自己做这件事,看看它是如何影响页面的。
您还应该问自己是否真的有必要防止这种情况发生。这似乎不太可能是安全风险。
答案 2 :(得分:0)
Content scripts可以访问相同的DOM,但可以在a isolated environment中运行,这意味着他们无法访问/更改您的javascript,但他们可以更改您的DOM。
如果要检测更改DOM的内容脚本,可以使用MutationObserver监听DOM更改。如果您自己不改变DOM(例如使用React),您可以听取任何更改。