Die Berechtigung "activeTab" gewährt einer Erweiterung temporären Zugriff auf den aktuell aktiven Tab, wenn der Nutzer die Erweiterung aufruft, z. B. durch Klicken auf die Aktion. Der Zugriff auf den Tab ist so lange möglich, wie der Nutzer sich auf der Seite befindet. Er wird widerrufen, wenn der Nutzer die Seite verlässt oder den Tab schließt.
Wenn der Nutzer die Erweiterung beispielsweise auf https://beispiel.de aufruft und dann zu https://beispiel.de/foo wechselt, hat die Erweiterung weiterhin Zugriff auf die Seite. Wenn der Nutzer https://chromium.org aufruft, wird der Zugriff widerrufen.
Dies ist eine Alternative für viele Anwendungsfälle von "<all_urls>", es wird jedoch keine Warnmeldung während der Installation angezeigt:
Ohne "activeTab":

Mit "activeTab":

Der Zugriff auf eingeschränkte Seiten wie chrome://-Seiten wird nicht gewährt.
Beispiel
Beispielerweiterung „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 the tab URL is not set, it is a restricted page.
if (tab.url) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
Motivation
Stellen Sie sich eine Erweiterung zum Ausschneiden von Webseiten vor, die eine Aktion und ein Kontextmenüelement hat. Diese Erweiterung muss möglicherweise nur dann auf Tabs zugreifen, wenn auf ihre Aktion geklickt oder ihr Kontextmenüelement ausgeführt wird.
Ohne "activeTab" müsste diese Erweiterung vollständigen, dauerhaften Zugriff auf jede Website anfordern, nur damit sie ihre Arbeit erledigen kann, wenn sie vom Nutzer aufgerufen wird. Das ist viel Macht für eine so einfache Erweiterung. Wenn die Erweiterung manipuliert wird, erhält der Angreifer Zugriff auf alles, was die Erweiterung hatte.
Im Gegensatz dazu erhält eine Erweiterung mit der Berechtigung "activeTab" nur dann Zugriff auf einen Tab, wenn der Nutzer dies explizit veranlasst. Wenn die Erweiterung manipuliert wird, muss der Angreifer warten, bis der Nutzer die Erweiterung aufruft, bevor er Zugriff erhält. Dieser Zugriff besteht nur, bis der Tab geschlossen oder zu einem anderen Tab gewechselt wird.
Was „activeTab“ ermöglicht
Wenn die Berechtigung "activeTab" für einen Tab aktiviert ist, kann eine Erweiterung Folgendes tun:
- Rufen Sie auf diesem Tab
scripting.insertCSS()oderscripting.executeScript()auf, wenn auch die"scripting"-Berechtigung deklariert ist (wie im Beispiel oben). - Rufen Sie die URL, den Titel und das Favicon für diesen Tab über eine API ab, die ein
tabs.Tab-Objekt zurückgibt. Im Wesentlichen gewährt"activeTab"vorübergehend die Hostberechtigung. - Netzwerkanfragen im Tab an den Ursprung des Hauptframes des Tabs mit der webRequest-API abfangen. Die Erweiterung erhält vorübergehend Hostberechtigungen für den Ursprung des Hauptframes des Tabs.
activeTab aufrufen
Die "activeTab"-Berechtigung wird durch die folgenden Nutzeraktionen aktiviert:
- Eine Aktion ausführen
- Ausführen eines Kontextmenüelements
- Tastenkombination über die Commands API ausführen
- Vorschlag aus der Omnibox API annehmen