如何检测我的页面中是否注入了不需要的 chrome 内容脚本


这是一个

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

假设:

内容脚本是恶意代码,因此它可能会避免消息传递响应。

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

根据执行环境,

  1. 内容脚本在称为隔离世界的特殊环境中执行

  2. 他们
  3. 可以访问他们被注入的页面的 DOM,但不能访问页面创建的任何 JavaScript 变量或函数。

  4. 在页面上运行的 JavaScript 不能调用任何函数或访问内容脚本定义的任何变量。

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

内容脚本可以访问相同的 DOM,但在隔离的环境中运行,这意味着它们无法访问/更改您的 JavaScript,但可以更改您的 DOM。

如果你想检测一个内容脚本改变了你的 DOM,你可以使用 MutationObserver 监听 DOM 的变化。如果你自己不改变 DOM(例如使用 React ),你可以听任何更改。

您可以尝试将这样的脚本添加到您自己的浏览器中,看看它是如何显示的。如果它确实出现在渲染的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 脚本是沙盒化的。找出如何防止一件事的最好方法是尝试自己做这件事,看看它如何影响页面。

您还应该问问自己是否真的有必要防止这种情况。这似乎不太可能是安全风险。

相关内容

最新更新