Die Berechtigung „activeTab“

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:

Ohne ActiveTab

Mit 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 oder tabs.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 mit activeTab die Berechtigung tabs 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: