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

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

拡張機能のユーザーを保護し、尊重するため、ユーザーの個人情報を保護するための予防策を盛り込みます。

必要な権限を減らす

拡張機能がアクセスできる 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/" ],
  ...
}

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

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

[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 を使用するか、 データ量を節約できます拡張機能に何かを保存する必要がある場合は、まず、それが 開きます。デフォルトでは、拡張機能はシークレット ウィンドウでは動作しません。

シークレット モードは、ウィンドウに記録が残らないようにするものです。さまざまなソースから 拡張機能は、この約束を尊重する必要があります。拡張機能が通常のブラウジングを シークレット ウィンドウの履歴を保存しない。ただし、拡張機能は 設定をどのウィンドウからでも保存できます。

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

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