使用网站时,网站是否可以告知网络浏览器中安装了哪些插件?如果是这样,是否可以隐藏它,或随机化名称/标识?
答案 0 :(得分:2)
取决于插件的类型以及它们使用的URI方案。
Webextensions需要选择将他们的moz-extension:
资源公开给网络,并且他们目前在每次安装的基础上随机化他们的UUID,这使他们的资源非常难以探测。
其他扩展类型(尤其是SDK插件)可以注册resource:
,about:
或类似的Web可访问URI,这些URI可由Web内容检测,除非被内容策略阻止。例如,no resource URI leak插件和各种内容拦截器就是这样做的。
答案 1 :(得分:1)
一般来说,不是:
网页无法确定Firefox浏览器/配置文件中安装的加载项的一般列表。
但是,根据附加组件对环境,DOM以及可能的脚本操作的影响,您可能很有可能检测到安装了特定加载项的可能性很高。这些影响的严格依赖于附加组件的附加组件。
URI资源泄露:
正如the8472的answer所述,某些附加组件可能对环境产生的影响之一就是泄露了Web可访问的URI。您可以测试您知道哪些附加组件泄露/可用的有效性。一些可能的URI包括以下方案:about:
,moz-extension:
和resource:
。与测试互联网上存在哪些网页一样,可能的URI组合非常庞大,因此无法进行详尽的搜索。对于某些特定扩展,您可以测试确切的已知资源。
DOM /计算出的样式更改:
您可以测试DOM的更改或应用CSS。如果您知道特定加载项对DOM(插入,删除等)或特定元素的计算样式的影响,则可以显式测试这些影响。您还可以测试一些您不希望看到的更改。虽然通常针对意外更改进行测试可能会告诉您,加载项可能会影响您的页面,而不知道已知加载项所做的特定预期更改,并且能够将实际更改与预期更改进行比较,您将不会能够说明哪个附加组件进行了这样的改变。
全球范围的变化:
您还可以测试对您的环境所做的更改。附加组件可能会阻止加载您期望的资源,更改这些资源,或添加/注入其他资源/属性/变量/函数。您可以测试是否有任何新的,缺失的或更改的属性。与DOM / CSS更改一样,如果您知道加载项对环境的影响,则只能声明它可能是特定的加载项。与DOM更改一样,您可以对每个浏览器(和版本)中预期的内容进行一般性比较。同样,这可以告诉您某些内容已被更改,但如果不将其与已知更改进行比较,您将无法说它是特定的附加组件(或仅仅是新版本的Firefox)。
检测特定加载项:
您必须确定页面可以检测到的任何特定加载项的效果。这可以通过实验和/或查看附加组件的源代码来确定。对于绝大多数加载项,加载项主要使用JavaScript编写。其源代码位于安装包中(通常是 .xpi 文件,这是一个zip格式文件,扩展名更改为.xpi
)。
不是100%保证任何检测都是一个确切的附加组件:
你只会知道发生了一些变化。您可能能够识别您认为特定加载项所期望的更改,但这并不意味着更改不是由其他加载项进行的。在这种情况下,更改很可能是您尝试识别的附加组件,但并非100%保证。
您的问题文字会询问与您的问题标题截然不同的问题。 Plugins是一个type of add-on,它提供“用户可以安装的共享库,以显示浏览器无法显示的内容。”非常具体地,这些旨在提供可用于网页的功能。您肯定可以检测浏览器中可用的插件。您可以使用window.navigator.plugins
来执行此操作,PluginArray提供Plugin objects {{3}}来描述已安装的插件。
答案 2 :(得分:0)
Java Script提供的document.plugins非常可行。 API