ActiveTab 権限

activeTab 権限は、ブラウザ アクションをクリックするなど、ユーザーが拡張機能を呼び出すときに、現在アクティブなタブに拡張機能が一時的にアクセスできるようにします。タブへのアクセスは、ユーザーがそのページにアクセスしている間は持続し、ユーザーが別のページに移動するかタブを閉じると取り消されます。

これは <all_urls> の多くの使用場面で代替手段として使用できますが、インストール中に警告メッセージは表示されません

注: M72 以降では、ユーザーが別のオリジンに移動するまで activeTab 権限が付与されます。つまり、ユーザーが https://example.com で拡張機能を呼び出した後に https://example.com/foo に移動しても、拡張機能は引き続きそのページにアクセスできます。ユーザーが https://chromium.org にアクセスすると、アクセスが取り消されます。

activeTab を使用しない場合:

ActiveTab を使用しない場合

activeTab の場合:

ActiveTab あり

Page Redder 拡張機能のサンプルをご覧ください。

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

目的

ブラウザ アクションコンテキスト メニュー項目を持つウェブ クリッピング拡張機能について考えてみましょう。この拡張機能では、ブラウザ アクションがクリックされたとき、またはコンテキスト メニュー項目が実行されたときにのみ、タブにアクセスする必要があります。

activeTab がなければ、この拡張機能はすべてのウェブサイトへの完全かつ永続的なアクセスをリクエストする必要があります。これは、ユーザーによって呼び出された場合に機能を実行するためです。このようにシンプルな拡張機能に任せられるのは 大きなメリットです拡張機能が侵害されると、攻撃者は拡張機能のすべての情報にアクセスできるようになります。

これに対して、activeTab 権限を持つ拡張機能は、明示的なユーザー操作に応じてのみタブへのアクセス権を取得します。拡張機能が侵害された場合、攻撃者はユーザーが拡張機能を呼び出すのを待ってからアクセス権を取得する必要があります。このアクセス権は、タブを操作するか閉じるまで 有効です

ActiveTab でできること

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

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

ActiveTab の呼び出し

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