ユーザーのプライバシーを保護する

プライバシーが侵害された場合や、必要と思われる追加の権限を要求された場合、ユーザーは拡張機能をインストールしません。権限のリクエストは、ユーザーにとって理にかなったものにし、拡張機能の実装に不可欠な情報に限定する必要があります。ユーザーデータを収集または送信する拡張機能は、ユーザーのプライバシーの保護のポリシーに準拠している必要があります。

ID の安全性を保つために以下の予防策を講じることで、拡張機能のユーザーを保護し、尊重してください。

必要な権限を減らす

拡張機能がアクセスできる API は、マニフェストpermissions フィールドに指定されています。付与される権限が多いほど、攻撃者が情報を傍受する手段も多くなります。拡張機能が依存する API のみをリスト表示し、影響の少ないオプションを検討する必要があります。拡張機能がリクエストする権限が少ないほど、ユーザーに表示される権限の警告は少なくなります。ユーザーは警告が限定された拡張機能をインストールする可能性が高くなります。

拡張機能は、現在必要のない権限をリクエストすることでユーザーデータにアクセスする「将来を見据えた」アクセス権を使用するべきではありません(ただし、今後実装される可能性があります)。拡張機能の更新に新しい権限を含め、それらをオプションにすることを検討します。

activeTab

多くの場合、ホスト権限を使用してスクリプトを挿入する拡張機能で、代わりに activeTab を使用できます。activeTab 権限は、ユーザーが拡張機能を呼び出した場合にのみ、現在アクティブなタブに対する一時的なアクセス権を拡張機能に付与します。ユーザーが現在のタブから移動したり、現在のタブを閉じたりすると、アクセスが途切れます。<all_urls> のさまざまな使用方法の代わりとして使用できます。

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

ActiveTab 権限では、インストール中に警告メッセージが表示されません。

オプションの権限を有効にする

オプションの権限を含めることで、ユーザーが拡張機能に必要な機能と権限を選択できるようにします。拡張機能のコア機能に不可欠な機能でない場合は、その機能をオプションにして、API またはドメインを optional_permissions フィールドに移動します。

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

オプションの権限を含めることで、ユーザーが関連機能を有効にしたときに、特定の権限が必要な理由を拡張機能で説明できるようになります。この拡張機能では、機能を有効にするオプションをユーザーに提供できます。

権限を有効にするよう求めるポップアップのスクリーンショット

[OK] をクリックすると、Service Worker で次のイベントがトリガーされます。

chrome.action.onClicked.addListener((event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request(
    {
      permissions: ["tabs", "scripting"],
      origins: ['https://www.google.com/']
    },
    function (granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        // doSomething();
      } else {
        // doSomethingElse();
      }
    }
  );
});

ユーザーには、次のリクエストを求めるメッセージが表示されます。

任意の権限リクエストのスクリーンショット。

拡張機能の更新でオプションの権限を実装することもできます。これにより、新しい必要な権限で更新した場合と同様に、拡張機能を無効にせずにユーザーが新機能を利用できるようになります。

ユーザー情報を制限して保護する

拡張機能に必要な最小限のデータのみをリクエストします。拡張機能がユーザーに求める情報が少ないほど、拡張機能が不正使用された場合に漏洩する可能性は低くなります。

リクエストされたユーザーデータはすべて慎重に取り扱う必要があります。登録済みドメインを持つセキュアなサーバーにデータを保存、取得する。拡張機能のストレージは暗号化されないため、常に HTTPS を使用して接続してください。また、拡張機能のクライアントサイドにユーザーの機密データを保持しないようにしてください。

データの保存とシークレット モード

拡張機能では、storage API を使用するか、データの保存につながるサーバー リクエストを行って、データを保存できます。拡張機能でなんらかの保存が必要な場合は、まずシークレット ウィンドウからのものかどうかを確認します。デフォルトでは、拡張機能はシークレット ウィンドウでは実行されません。

シークレット モード: ウィンドウにすべてのトラックが留まることが保証されます。シークレット ウィンドウのデータを処理する場合、拡張機能はこの約束を尊重する必要があります。拡張機能で通常閲覧履歴が保存される場合は、シークレット ウィンドウの履歴を保存しないでください。ただし、拡張機能は、シークレット モードかどうかにかかわらず、任意のウィンドウから設定を保存できます。

ウィンドウがシークレット モードかどうかを検出するには、関連する tabs.Tab オブジェクトまたは windows.Window オブジェクトの incognito プロパティを確認します。

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}