web-dev-qa-db-ja.com

HTML5バッテリー機能を無効にする

HTML5には、クライアントのバッテリーステータスに関連する 機能セット があります。これは プライバシーホール として記述されています。これは、Webユーザーの追跡と識別に使用できるためです。調査によると、この機能は VPNを使用してユーザーを識別する またはプライベートブラウジングモードでも使用できます。

影響を受けるブラウザと、これらの機能を無効にするにはどうすればよいですか?

12
Gruber

Firefox

Firefox 52以降、バッテリーAPIは無効になり、Chrome /特権コードでのみ使用できます(アドオンはこのカテゴリに該当すると思います)。以前のバージョンでは、バッテリーAPIはデフォルトで有効になっています。 about:configに移動し、dom.battery.enabledfalseに設定することで無効にできます。変更は、後続のページの読み込みですぐに有効になります。


ChromeとAndroid

モバイル版とデスクトップ版の両方が影響を受けます。この機能はデフォルトで有効になっており、まだ無効にする方法はないようですが、プライバシーを重視する場合はChromeを使用するべきではありません。

Androidブラウザはバージョン40以降に影響を受けますが、無効にする方法もありません。


インターネットエクスプローラ

この機能は 検討中 であり、現在のバージョンでは(まだ?)実装されていません。


サファリ

この機能は現在、デスクトップにもモバイルにも、どのバージョンにも実装されていません。


Opera

デスクトップ上のOperaが影響を受けます。この機能は無効にする方法なしで有効になります。 Opera Miniは影響を受けません。


これが demo で、脆弱かどうかを確認できます。また、ブラウザでサポートされている機能に関する最新情報を提供する 使用できます もあります。私はこの回答を最新の状態に保つために最善を尽くしますが、何かが変更された場合に備えて、ここで再確認することをお勧めします。

8
André Borie

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);

デスクトップバージョンの場合、グリースモンキーなどを使用して、ドキュメント内のスクリプトが実行される前にこのスクリプトを実行して、APIの使用を防ぐことができます。モバイルデバイスの場合、問題はドキュメントスクリプトが実行される前に自動で実行されることです。ブックマークレットとして保存することもできますが、ブックマークレットを実行する前にサイドスクリプトを実行すると、変更されていないナビゲーターオブジェクトが保存される可能性があります。 (+ブックマークレットを忘れる可能性があります)

1
JohnD03