【问题标题】:Can websites tell what addons are installed in a Firefox web browser?网站可以告诉 Firefox Web 浏览器中安装了哪些插件吗?
【发布时间】:2016-09-04 16:42:09
【问题描述】:

在使用网站时,网站是否可以分辨出 Web 浏览器中安装了哪些插件?如果是这样,是否可以隐藏它,或随机化名称/身份?

【问题讨论】:

  • 没有办法。仅当插件向公众公开某些内容时,才可以。例如,有些可能具有内容可访问的资源。所以你可以使用这个技巧 - 我现在找不到它,将编辑它。
  • @Noitidart 所以他们不能?例如,谷歌和广告拦截器?我在这里阅读了有关 Chrome 的信息:stackoverflow.com/questions/6293498/…
  • @User,您链接的问题/答案是关于明确编程以允许网页检测到它已安装的附加组件。这很简单,并且适用于所有附加类型。这样做是必须有意放置在插件中的代码。这是与您提出的问题非常不同的情况,即如何在没有将此类检测功能专门写入加载项的情况下通常确定安装了哪些加载项。
  • 这个问题是题外话,与实际编程无关。赏金期一过,就应该关闭。

标签: firefox firefox-addon


【解决方案1】:

一般的附加组件/扩展

一般来说,不会:
网页无法确定安装在 Firefox 浏览器/配置文件中的附加组件的一般列表。

但是,您可以根据插件对环境、DOM 以及(可能)脚本操作的影响来检测是否安装了特定插件。这些效果是什么,严格来说是逐个附加的。

URI 资源泄露:
正如the8472 的answer 所述,某些附加组件可能对环境产生的影响之一是泄漏Web 可访问的URI。您可以测试那些您知道被特定附加组件泄露/提供的内容的有效性。一些可能的 URI 包括以下方案:about:、moz-extension: 和 resource:。与测试以查看 Internet 上存在哪些网页一样,可能的 URI 组合非常多,因此穷举搜索是不合理的。对于某些特定的扩展,您可以测试确切的已知资源。

DOM/计算样式更改:
您可以测试对 DOM 的更改或应用的 CSS。如果您知道特定插件对 DOM 的影响(插入、删除等)或特定元素的计算样式,则可以显式测试这些效果。您还可以一般地测试您不希望看到的更改。虽然对意外更改的一般测试可能会告诉您附加组件可能会影响您的页面,但您不知道已知附加组件所做的具体预期更改并且无法将实际更改与预期更改进行比较,您不会能够说出是哪个插件执行了此类更改。

对全局范围的更改:
您还可以测试对您的环境所做的更改。附加组件可能会阻止加载您期望的资源,对这些资源进行更改,或添加/注入其他资源/属性/变量/函数。您可以测试以查看是否有任何新的、缺少的或更改的属性。与 DOM/CSS 更改一样,如果您知道插件对您的环境的影响,您只能声明它可能是一个特定的插件。与 DOM 更改一样,您可以与您期望在每个浏览器(和版本)中看到的内容进行一般比较。同样,这可以告诉您某些内容已更改,但如果不将其与已知更改进行比较,您将无法说它是特定的附加组件(或只是 Firefox 的新版本)。

检测特定插件:
您必须确定您的页面可以检测到任何特定附加组件的影响。这可以通过实验和/或查看附加组件的源代码来确定。对于绝大多数插件来说,插件主要是用 JavaScript 编写的。它的源代码在安装包中(通常是一个.xpi文件,这是一个扩展名为.xpi的zip格式文件)。

不能 100% 保证任何检测都是准确的附加组件:
你只会知道发生了一些变化。您可能能够识别出您所看到的更改是您期望由特定加载项进行的更改,但这并不意味着这些更改不是由另一个加载项进行的。在这种情况下,更改很可能是您尝试识别的附加组件,但不能 100% 保证。

插件

您的问题文本提出了一个与问题标题截然不同的问题。 Plugins 是 type of add-on 之一,它提供“用户可以安装共享库以显示浏览器无法原生显示的内容”。非常具体地,这些旨在提供网页可用的功能。您绝对可以检测浏览器中可用的插件。您可以使用 window.navigator.plugins 来执行此操作,它提供了 PluginArray 或 Plugin objects 来描述已安装的插件。

【讨论】:

    【解决方案2】:

    取决于插件的类型和它们使用的 URI 方案。

    Webextensions 需要选择加入以将其 moz-extension: 资源公开给 Web 和 iirc,他们目前在每次安装的基础上随机化其 UUID,这使得探索他们的资源变得非常困难。

    其他扩展类型,尤其是 SDK 插件,可能会注册 resource:、about: 或类似的 Web 可访问 URI,这些 URI 可以被 Web 内容检测到,除非被内容策略阻止。例如no resource URI leak 插件和各种内容拦截器就是这样做的。

    【讨论】:

      【解决方案3】:

      使用 Java Script 提供的 document.plugins 很可能。 API

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        • 2014-08-25
        • 2015-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多