Die Berechtigung activeTab
gewährt einer Erweiterung vorübergehenden Zugriff auf den derzeit aktiven Tab, wenn der Nutzer die Erweiterung aufruft – z. B. durch Klicken auf ihre Browseraktion. Der Zugriff auf den Tab bleibt bestehen, während sich der Nutzer auf der Seite befindet, und wird widerrufen, wenn er die Seite verlässt oder den Tab schließt.
Dies ist eine Alternative für viele Verwendungen von <all_urls>
, zeigt jedoch während der Installation keine Warnmeldung an:
Hinweis:Ab M72 wird die Berechtigung activeTab
gewährt, bis der Nutzer zu einem anderen Ursprung navigiert. Wenn der Nutzer also die Erweiterung unter https://example.com aufruft und dann https://example.com/foo aufruft, hat die Erweiterung weiterhin Zugriff auf die Seite. Wenn der Nutzer https://chromium.org aufruft, wird der Zugriff widerrufen.
Ohne activeTab
:
Mit activeTab
:
Beispiel
Sehen Sie sich die Beispielerweiterung Page Redder an:
{
"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"'
});
});
Ziel
Nehmen wir als Beispiel eine Web-Clipping-Erweiterung mit einer Browseraktion und einem Kontextmenüelement. Diese Erweiterung benötigt eigentlich nur dann Zugriff auf Tabs, wenn auf die Browseraktion geklickt oder das Kontextmenüelement ausgeführt wird.
Ohne activeTab
müsste diese Erweiterung vollständigen, dauerhaften Zugriff auf jede Website anfordern, damit sie ihre Arbeit ausführen kann, falls der Nutzer sie aufrufen würde. Das ist sehr viel Kraft, um einer so
einfachen Erweiterung zu vertrauen. Sollte die Erweiterung irgendwann kompromittiert werden, erhält der Angreifer Zugriff auf alle Inhalte der Erweiterung.
Im Gegensatz dazu erhält eine Erweiterung mit der Berechtigung activeTab
nur als Reaktion auf eine explizite Nutzergeste Zugriff auf einen Tab. Wenn die Erweiterung manipuliert wurde, muss der Angreifer warten, bis der Nutzer die Erweiterung aufruft, bevor er Zugriff erhält. Dieser Zugriff ist nur so lange aktiv,
bis der Tab navigiert oder geschlossen wird.
Funktionen von „activeTab“
Solange die Berechtigung activeTab
für einen Tab aktiviert ist, kann eine Erweiterung:
- Rufen Sie auf diesem Tab
tabs.executeScript
odertabs.insertCSS
auf. - 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 Prinzip wird mitactiveTab
die Berechtigungtabs
vorübergehend gewährt. - Mit der webRequest API können Sie Netzwerkanfragen auf dem Tab zum Ursprung des Mainframes des Tabs abfangen. Die Erweiterung erhält vorübergehend Hostberechtigungen für den Hauptframe des Tabs.
ActiveTab wird aufgerufen
Durch folgende Nutzergesten wird activeTab
aktiviert:
- Browseraktion ausführen
- Seitenaktion ausführen
- Kontextmenüelement ausführen
- Tastenkombination über die Commands API ausführen
- Einen Vorschlag der Omnibox API akzeptieren