権限を宣言してユーザーに警告する

ウェブサイトやほとんどの Chrome API に拡張機能がアクセスできるかどうかは、 権限。権限は、その機能に必要なもののみに制限する必要があります。 権限を制限することで拡張機能の機能が確立され、データへの侵入が抑制されます 拡張機能が攻撃者によって不正使用された場合に通知されます。以下を実装することで、拡張機能とそのユーザーを保護できます。 オプションの権限について学習します。

権限を整理する

権限とは、Chrome API や一致パターンを参照する既知の文字列で、 ホストします。これらはマニフェストにリストされ、必要な権限または権限として指定されています。 オプションの権限

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

必要な権限を、拡張機能のコア機能に必要な権限のみに制限する。「 拡張機能が現在必要以上の権限をリクエストしてはなりません。将来の変化に対応できる 権限をリクエストできます。

オプション機能に必要な権限は、オプションの権限として登録する必要があります。この ユーザーは、拡張機能を提供する権限と機能を決定できます。 あります。

必要な権限を特定する

シンプルな拡張機能では複数の権限をリクエストする必要があり、多くの権限が表示されます 警告が表示されます。拡張機能の警告や警告が限定的であっても、ユーザーは拡張機能を信用する傾向がある 制御できるようになります。

インストール時に拡張機能の権限に関する警告が表示される

拡張機能のコア機能と、拡張機能に必要な権限を特定します。検討事項 警告付きの権限が必要な場合に機能をオプションにする。

イベントを使用してオプションの権限をトリガーする

オプションの権限のサンプル拡張機能のコア機能が新しいタブページをオーバーライドしています。 ユーザーの今日の目標を表示する機能。この機能が必要になるのは、ストレージ この権限が付与されると、警告は表示されません。

追加機能を有効にする拡張機能ボタン

この拡張機能には追加機能があります。ユーザーの上位のサイトを表示するこの機能を使用するには topSites 権限であるため、警告が表示されます。

topSites API の拡張機能に関する警告

オプションとして警告付きの権限を使用する機能を開発し、それらを導入する 機能によって、拡張機能をリスクなしでユーザーに自然に紹介できます。また、 拡張機能を使用すると、ユーザーは拡張機能を使用してユーザー エクスペリエンスをさらにカスタマイズできます。 警告の説明が表示されます。

ActiveTab 権限を置き換える

activeTab 権限は、ユーザーがアクセスしているサイトに一時的なアクセス権を付与し、 拡張機能を使用して、現在のタブで "tabs" 権限を使用できるようにします。Kubernetes は、 多くの場合、"<all_urls>"し、インストール時に警告は表示されません。

ActiveTab を使用しない場合:

ActiveTab がない権限 UI

activeTab を使用すると、次のようになります。

[activeTab] がある権限 UI

activeTab 権限は、拡張機能が現在アクティブなタブへの一時的なアクセス権を ユーザーが拡張機能を呼び出します。拡張機能が不正使用されている場合、攻撃者は 拡張機能を呼び出せます。また、そのアクセスは、 タブが移動または閉じられたとき。

タブで activeTab 権限が有効になっている場合、拡張機能は次のことができます。

  • そのタブで tabs.executeScript または tabs.insertCSS を呼び出します。
  • tabs.Tab オブジェクトを返す API を使用して、そのタブの URL、タイトル、ファビコンを取得します。
  • webRequest を使用して、タブのメインフレーム オリジンへのネットワーク リクエストをインターセプトします。 APIこの拡張機能は、タブのメインフレーム オリジンに対するホスト権限を一時的に取得します。

次のユーザー操作により、activeTab が有効になります。

アクセスを許可しています

拡張機能が file:// の URL にアクセスする必要がある場合、またはシークレット モードで動作する必要がある場合、ユーザーは次の操作を行う必要があります 拡張機能の詳細ページ(chrome://extensions)で、これらの機能へのアクセスを有効にします。

拡張機能の詳細ページでのファイルの URL とシークレット モードを許可する

拡張機能は、シークレット モードで有効になっているかどうかを次の呼び出しによって検出できます。 extension.isAllowedIncognitoAccess()、または次を含む file:// の URL で実施可能 extension.isAllowedFileSchemeAccess() .

権限について

API によって拡張機能のユーザーに付与された機能を説明する権限警告がありますが、 これらの警告の中には、初めはわかりにくいものもあります。たとえば、"tabs" を 許可の結果、無関係に見える警告が表示されます。この拡張機能は閲覧権限や アクティビティchrome.tabs API は新しいタブを開くためだけに使用することもできますが、 新たに開いたすべてのタブに関連付けられた URL を、tabs.Tab オブジェクトを使用して確認できます。

可能であれば、オプションの権限または性能の低い API を実装して、アラームが発生しないようにします。 表示されます。

警告の表示

拡張機能が解凍されたファイルとして読み込まれている場合、権限に関する警告は表示されません。イベントを 拡張機能の権限に関する警告で chrome://extensions に移動し、デベロッパー モードが有効になっていることを確認する [PACK EXTENSION] をクリックします。

[デベロッパー モード] にチェックが入っている状態で [拡張機能をパッケージ化] をクリック

[Extension root Directory] フィールドに拡張機能のフォルダのパスを入力し、[ [拡張機能のパッケージ化] ボタン。初回パッケージでは、[秘密鍵] フィールドを無視します。

拡張機能のパスを指定して [拡張機能をパッケージ化] をクリック

.crx ファイルと .pem ファイルの 2 つが作成されます。このファイルには拡張機能の されます。

パッケージ化された拡張機能ファイル

秘密鍵を紛失しないように注意してください。.pem ファイルを非公開の安全な場所に保管します。CANNOT TRANSLATE 拡張機能の更新に必要です。

.crx ファイルを Chrome 拡張機能の管理ページにドロップしてインストールします。

インストールするファイルをドロップ

.crx ファイルをドロップすると、拡張機能を追加して表示できるかどうかを確認するメッセージがブラウザに表示されます。 表示されます。

新しいタブ拡張機能に関する警告

警告のある権限

注: 権限テーブルはベスト エフォート ベースで更新されるため、多少の差異が生じる場合があります。 現在の警告が表示されますまた、一部の権限は、アプリとペア設定されている場合、 できます。たとえば、"tabs" 警告は、拡張機能が "<all_urls>" のリクエスト。拡張機能の権限に関して表示された最新の警告を確認するには、 警告の表示の手順を参照してください。

権限 説明 警告
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
拡張機能にすべてのホストへのアクセス権を付与します。環境変数を使用すると、 activeTab 権限。 アクセスしたウェブサイト上のすべてのデータの読み取りと変更
"https://HostName.com/" 拡張機能に "https://HostName.com/" へのアクセス権を付与します。環境変数を 1 つしか宣言せずに、 activeTab 権限を使用してホスト権限を設定する。 HostName.com のデータの読み取りと変更
"bookmarks" 拡張機能に chrome.bookmarks API へのアクセスを許可します。 ブックマークの読み取りと変更
"clipboardRead" 拡張機能が document.execCommand('paste') を使用する場合は必須です。 コピーして貼り付けたデータを読み取る
"clipboardWrite" 拡張機能で document.execCommand('copy') または document.execCommand('cut') コピーして貼り付けるデータを変更する
"contentSettings" 拡張機能に chrome.contentSettings API へのアクセスを許可します。 ウェブサイトの管理設定を変更するCookie、JavaScript、プラグイン 位置情報、マイク、カメラなどです
"debugger" 拡張機能に chrome.debugger API へのアクセスを許可します。
  • ページデバッガ バックエンドにアクセスする
  • アクセスしたウェブサイト上のすべてのデータの読み取りと変更
"declarativeNetRequest" 拡張機能に chrome.declarativeNetRequest API へのアクセスを許可します。 ページ コンテンツをブロックする
"desktopCapture" 拡張機能に chrome.desktopCapture API へのアクセスを許可します。 画面のコンテンツをキャプチャする
"downloads" 拡張機能に chrome.downloads API へのアクセスを許可します。 一時保存を管理する
"geolocation" 拡張機能が HTML5 Geolocation API を使用できるようにします 許可するかどうかを判断します。 物理的な現在地を検出する
"history" 拡張機能に chrome.history API へのアクセスを許可します。 閲覧履歴の読み取りと変更
"management" 拡張機能に chrome.management API へのアクセス権を付与します。 アプリ、拡張機能、テーマを管理する
"nativeMessaging" 拡張機能にネイティブ メッセージング API へのアクセス権を付与します。 連携するネイティブ アプリケーションと通信する
"notifications" 拡張機能に chrome.notifications API へのアクセスを許可します。 通知を表示する
"pageCapture" 拡張機能に chrome.pageCapture API へのアクセスを許可します。 アクセスしたウェブサイト上のすべてのデータの読み取りと変更
"privacy" 拡張機能に chrome.privacy API へのアクセスを許可します。 プライバシー関連の設定を変更する
"proxy" 拡張機能に chrome.proxy API へのアクセスを許可します。 アクセスしたウェブサイト上のすべてのデータの読み取りと変更
"system.storage" 拡張機能に chrome.system.storage API へのアクセスを許可します。 ストレージ デバイスを特定して取り外す
"tabCapture" 拡張機能に chrome.tabCapture API へのアクセスを許可します。 アクセスしたウェブサイト上のすべてのデータの読み取りと変更
"tabs" 複数の API で使用される Tab オブジェクトの特権フィールドへのアクセス権を拡張機能に付与します。 chrome.tabschrome.windows を含む。イン 多くの場合、拡張機能を使用する際に "tabs" 権限を宣言する必要はありません。 これらの API を使用します。 閲覧履歴の読み取り
"topSites" 拡張機能に chrome.topSites API へのアクセスを許可します。 よくアクセスするウェブサイトのリストを読み上げる
"ttsEngine" 拡張機能に chrome.ttsEngine API へのアクセスを許可します。 合成音声で読み上げられたすべてのテキストを読み取る
"webNavigation" 拡張機能に chrome.webNavigation API へのアクセスを許可します。 閲覧履歴の読み取り

許可を更新

権限を追加して拡張機能を更新すると、一時的に無効になることがあります。ユーザーは 新しい警告に同意した後に再度有効にしてください。

tabs 権限が含まれるようになった拡張機能をユーザーが手動で更新した場合、 管理ページに警告が表示されます。

タブ権限の追加

拡張機能が自動更新された場合、ユーザーが新しい 付与できます。

拡張機能が無効になっています

権限に同意する

これを回避するには、この新機能をオプションに設定し、 マニフェストoptional_permissions