L’autorisation activeTab

L'autorisation activeTab donne à une extension un accès temporaire à l'onglet actuellement actif lorsque l'utilisateur appelle l'extension, par exemple en cliquant sur son action de navigateur. L'accès à cet onglet dure tant que l'utilisateur est sur la page en question. Il est révoqué s'il la quitte ou le ferme.

Cette méthode sert d'alternative pour de nombreuses utilisations de <all_urls>, mais n'affiche aucun message d'avertissement lors de l'installation:

Remarque:À partir de M72, l'autorisation activeTab sera accordée jusqu'à ce que l'utilisateur accède à une autre origine. Autrement dit, si l'utilisateur appelle l'extension sur https://example.com, puis accède à https://example.com/foo, l'extension continuera d'avoir accès à la page. Si l'utilisateur accède à https://chromium.org, son accès est révoqué.

Sans activeTab:

Sans ActiveTab

Avec activeTab :

Avec ActiveTab

Exemple

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

Motivation

Prenons l'exemple d'une extension Web Clipping qui comporte une action de navigateur et un élément de menu contextuel. Il est possible que cette extension n'ait réellement besoin d'accéder aux onglets que lorsque l'utilisateur clique sur son action de navigateur ou que son élément de menu contextuel est exécuté.

Sans activeTab, cette extension devrait demander un accès complet et persistant à chaque site Web, afin de pouvoir faire son travail si l'utilisateur l'appelle. C'est beaucoup de pouvoir à confier à une extension aussi simple. Et si l’extension est compromise, l’attaquant obtient l’accès à tout ce qu’elle avait.

En revanche, une extension disposant de l'autorisation activeTab n'obtient l'accès à un onglet qu'en réponse à un geste explicite de l'utilisateur. Si l'extension est compromise, le pirate informatique doit attendre que l'utilisateur l'appelle avant d'obtenir l'accès. Et cet accès ne dure que jusqu'à ce que l'onglet soit consulté ou fermé.

Ce qu'ActiveTab permet

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

  • Appelez tabs.executeScript ou tabs.insertCSS dans cet onglet.
  • Obtenez 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 tabs).
  • Interceptez les requêtes réseau dans l'onglet jusqu'à l'origine du frame principal de l'onglet à l'aide de l'API webRequest. L'extension obtient temporairement les autorisations d'hôte pour l'origine du frame principal de l'onglet.

Appeler activeTab

Les gestes d'utilisateur suivants activent activeTab: