禁用 HTML5 电池功能

信息安全 网页浏览器 指纹识别 html-5
2021-08-14 17:38:32

HTML5 具有与客户端电池状态相关功能集它被描述为一个隐私漏洞,因为它可以用来跟踪和识别网络用户。研究表明,这些功能甚至可以用来识别使用 VPN或隐私浏​​览模式的用户。

哪些浏览器会受到影响,如何禁用这些功能?

2个回答

火狐

从 Firefox 52 开始,电池 API 已被禁用,仅适用于 chrome/特权代码(我认为附加组件属于此类)。对于早期版本,默认启用电池 API。可以通过转到 toabout:config并设置dom.battery.enabledto来禁用它false更改会在后续页面加载时立即生效。


铬和安卓

移动版和桌面版都受到影响。此功能默认启用,似乎还没有任何方法可以禁用它,但如果您关心隐私,则根本不应该使用 Chrome。

Android 浏览器从 40 版开始受到影响,也没有任何方法可以禁用它。


IE浏览器

该功能正在考虑中,并且尚未(尚未?)在任何当前版本中实现。


苹果浏览器

此功能目前未在任何版本中实现,无论是桌面版还是移动版。


歌剧

桌面版 Opera 受到影响,该功能已启用,但无法禁用。Opera Mini 不受影响。


这是一个演示,您可以使用它来检查您是否容易受到攻击。还有Can I use提供了有关浏览器支持哪些功能的最新信息。我会尽力保持这个答案是最新的,但我建议你仔细检查一下,以防万一发生变化。

我找到了一种方法来防止使用 javascript 使用此 API。在 chrome 和 firefox(桌面版)中为我工作。

(function(navi){
   var nnav = new Proxy(navi,{
      get:function(t,p){
         if(p == "getBattery" || p == "battery"){
             return void(0);
         }
         if(t[p] instanceof Function){
             return t[p].bind(navi);
         }
         return t[p];
      },
      has:function(t,p){
         if(p == "getBattery" || p == "battery"){
            return false;
         }
         return p in navi;
      }
   });

   Object.defineProperty(window,"navigator",{
      configurable: false,
      enumberable: false,
      value:nnav,
      writable:false,
   });
})(window.navigator);

对于桌面版本,您可以使用greasemonkey 等在文档中的任何脚本运行之前运行此脚本,从而防止对API 的任何使用。对于移动设备,问题将是在文档脚本运行之前自动运行它。您可以将其保存为小书签,但如果边脚本在您运行小书签之前运行,它可能会存储未修改的导航器对象。(+你可能会忘记小书签)