L'autorisation "activeTab"

L'autorisation "activeTab" permet à une extension d'accéder temporairement à l'onglet actif lorsque la L'utilisateur appelle l'extension, par exemple en cliquant sur son action. Accéder à l'onglet dure tant que l'utilisateur est sur la page. Elle est désactivée lorsque l'utilisateur quitte la page ou ferme l'onglet. Par exemple, si l'utilisateur appelle l'extension sur https://example.com, puis accède à https://example.com/foo, l'extension aura toujours accès à la page. Si le accède à https://chromium.org, l'accès est révoqué.

Il peut servir d'alternative pour de nombreuses utilisations de "<all_urls>", mais affiche aucun message d'avertissement. pendant l'installation:

Sans "activeTab":

Sans activeTab

Avec "activeTab" :

Avec activeTab

Exemple

Consultez l'exemple d'extension 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
    });
  }
});

Motivation

Prenons l'exemple d'une extension Web Clipping qui comporte une action et un élément de menu contextuel. Ce peut n'avoir besoin d'accéder aux onglets que si l'utilisateur clique sur son action ou l'élément de menu contextuel est exécuté.

Sans "activeTab", cette extension devrait demander un accès complet et persistant à chaque site Web. afin qu'il puisse faire son travail s'il était appelé par l'utilisateur. Cela fait beaucoup pouvoir confier à une extension aussi simple. Et si jamais l'extension est compromise, l'attaquant a accès à tous les éléments de l'extension.

En revanche, une extension disposant de l'autorisation "activeTab" n'obtient l'accès qu'à un onglet en réponse à un geste explicite de l'utilisateur. Si l'extension est compromise, l'attaquant doit attendre que le d'appeler l'extension avant d'obtenir l'accès. Cet accès n'est valable que jusqu'à ce que l'onglet soit ou est fermée.

Qu'est-ce qu'activeTab ? autorise

Lorsque l'autorisation "activeTab" est activée pour un onglet, une extension peut:

  • Appelez scripting.insertCSS() ou scripting.executeScript() dans cet onglet si l'autorisation "scripting" est également déclarée (comme dans l'exemple ci-dessus).
  • obtenir l'URL, le titre et le favicon de cet onglet via une API qui renvoie un objet tabs.Tab ; (essentiellement, "activeTab" accorde temporairement l'autorisation d'hôte).
  • Intercepter les requêtes réseau dans l'onglet avec l'origine du frame principal de l'onglet à l'aide de webRequest API. L'extension obtient temporairement les autorisations de l'hôte pour l'origine du frame principal de l'onglet.

Appeler activeTab

Les gestes utilisateur suivants activent l'autorisation "activeTab":