首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测我的页面中是否注入了不需要的chrome content-script?

如何检测我的页面中是否注入了不需要的chrome content-script?
EN

Stack Overflow用户
提问于 2016-07-05 07:02:57
回答 3查看 1.9K关注 0票数 4

这是一个安全问题,我想避免通过chrome内容脚本注入代码,如果是这种情况,如何检测?

假设:

content-script是恶意代码,因此它可能会避免消息传递响应。

EN

回答 3

Stack Overflow用户

发布于 2016-07-05 09:02:15

据我所知,这是不可能的。

根据Execution environment的说法,

  1. 内容脚本在称为隔离世界

的特殊环境中执行

  1. 他们可以访问注入到其中的页面的DOM,但不能访问该页面创建的任何JavaScript变量或函数。

在页面上运行的

  1. JavaScript不能调用任何函数或访问content scripts.

定义的任何变量

我相信#3已经告诉我们,如果扩展不在我们的控制之下,我们就不知道是否有一些内容脚本正在运行。

票数 4
EN

Stack Overflow用户

发布于 2018-06-04 22:12:41

Content scripts可以访问相同的DOM,但可以在a isolated environment中运行,这意味着它们不能访问/更改您的javascript,但可以更改您的DOM。

如果要检测内容脚本是否更改了DOM,可以使用MutationObserver侦听DOM更改。如果您自己不修改DOM (例如使用React ),那么您可以监听任何更改。

票数 1
EN

Stack Overflow用户

发布于 2016-07-05 20:33:58

您可以尝试将这样的脚本添加到您自己的浏览器中,看看它是如何显示的。如果它确实出现在呈现的超文本标记语言中,那么也许可以用JavaScript检测到它:

代码语言: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脚本被沙盒包住了。最好的方法是找出如何防止一件事是尝试自己做那件事,看看它如何影响页面。

你也应该问问自己,是否真的有必要防止这种情况发生。这似乎不太可能是一个安全风险。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38193181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档