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"
:
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()
ouscripting.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"
:
- Exécuter une action
- Exécuter un élément de menu contextuel
- Exécuter un raccourci clavier à partir de l'API commands
- Accepter une suggestion de l'API omnibox