"activeTab"
権限は、拡張機能が現在アクティブなタブへの一時的なアクセス権を
ユーザーが拡張機能を呼び出す(たとえば action をクリックするなど)。タブへのアクセス
有効期間はユーザーがそのページを表示している間に有効で、ユーザーが別のページに移動したりタブを閉じたりすると無効になります。
たとえば、ユーザーが https://example.com で拡張機能を呼び出し、
https://example.com/foo に移動すると、拡張機能は引き続きそのページにアクセスできます。もし
ユーザーが https://chromium.org にアクセスすると、アクセスが取り消される。
これは "<all_urls>"
の多くを使用する場合に代替手段として機能しますが、警告メッセージは表示されません
インストール中:
"activeTab"
を使用しない場合:
"activeTab"
の場合:
例
サンプル拡張機能の Page Redder をご覧ください。
manifest.json:
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab",
"scripting"
],
"background": {
"service_worker": "service-worker.js"
},
"action": {
"default_title": "Make this page red"
},
"manifest_version": 3
}
service-worker:
function reddenPage() {
document.body.style.backgroundColor = 'red';
}
chrome.action.onClicked.addListener((tab) => {
if (!tab.url.includes('chrome://')) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
目的
アクションとコンテキスト メニュー項目があるウェブ クリッピング拡張機能について考えてみましょう。この 拡張機能が実際にタブにアクセスする必要があるのは、そのアクションがクリックされたときか、 コンテキスト メニュー項目が実行されました。
"activeTab"
がない場合、この拡張機能はすべてのウェブサイトへの完全かつ永続的なアクセス権をリクエストする必要があります。
ユーザーによってたまたま呼び出された場合に処理を実行できる状態にしておきます。生成 AI は
このようなシンプルな拡張に
任せられる力はありません拡張機能が不正使用されると
拡張機能が持っているすべてのものに
アクセスできるようになります
これに対して、"activeTab"
権限を持つ拡張機能は、
明示的に返すことができます。拡張機能が侵害された場合、攻撃者は
ユーザーが拡張機能を呼び出してからアクセスできるようにします。アクセスは、タブが開くまで
閉じられていることを示します。
「activeTab」とは許可
タブで "activeTab"
権限が有効になっている場合、拡張機能は次のことができます。
"scripting"
権限も宣言している場合は(上記の例のように)、そのタブでscripting.insertCSS()
またはscripting.executeScript()
を呼び出します。tabs.Tab
オブジェクトを返す API を使用して、そのタブの URL、タイトル、ファビコンを取得する (基本的に、"activeTab"
はホスト権限を一時的に付与します)。- webRequest を使用して、タブのメインフレーム オリジンへのネットワーク リクエストをインターセプトします。 APIこの拡張機能は、タブのメインフレーム オリジンに対するホスト権限を一時的に取得します。
activeTab の呼び出し中
次のユーザー操作により、"activeTab"
権限が有効になります。
- アクションの実行
- コンテキスト メニュー項目の実行
- commands API からキーボード ショートカットを実行する
- omnibox API からの提案の受け入れ