Die Berechtigung „activeTab“

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":

Ohne activeTab

Mit "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() oder scripting.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: