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
:
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
outabs.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'autorisationtabs
). - 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
:
- Exécuter une action sur le navigateur
- Exécuter une action sur une page
- Exécuter un élément de menu contextuel
- Exécuter un raccourci clavier à partir de l'API commands
- Acceptation d'une suggestion de l'API omnibox