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

ユーザーは、プライバシーを侵害する拡張機能や、必要と思われる以上の権限をリクエストする拡張機能をインストールしません。権限のリクエストはユーザーにとって理にかなったものでなければならず、またリクエストの対象とする情報は、拡張機能の実装に不可欠なものに限定する必要があります。ユーザーデータを収集または送信する拡張機能は、ユーザーデータのプライバシー ポリシーに準拠する必要があります。

ユーザーの身元を安全に保つための注意事項を記載して、拡張機能のユーザーを保護し、尊重してください。 拡張機能がアクセスできるデータが少ないほど、誤って漏洩するデータも少なくなることを覚えておきましょう。

必要な権限を減らす

拡張機能がアクセスできる 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": 2
}

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

オプションの権限を選択する

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

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

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

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

[OK] をクリックすると、バックグラウンド スクリプトで次のイベントがトリガーされます。

document.querySelector('#button').addEventListener('click', function(event) {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request({
    permissions: ['tabs'],
    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 を使用して接続し、拡張機能のストレージは暗号化されていないため、拡張機能のクライアント側に機密性の高いユーザーデータを保存しないでください。