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 Aktion. 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. Wenn der Nutzer beispielsweise 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.

Dies ist eine Alternative für viele Verwendungen von "<all_urls>", zeigt jedoch während der Installation keine Warnmeldung an:

Ohne "activeTab":

Ohne ActiveTab

Mit "activeTab":

Mit ActiveTab

Beispiel

Sehen Sie sich die Beispielerweiterung Page Redder an:

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
    });
  }
});

Ziel

Nehmen wir eine Web-Clipping-Erweiterung mit einer Aktion und einem Kontextmenüelement. Diese Erweiterung benötigt eigentlich nur dann Zugriff auf Tabs, wenn auf die entsprechende Aktion 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 verrichten 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.

Was ist mit "activeTab" möglich?

Solange die Berechtigung "activeTab" für einen Tab aktiviert ist, kann eine Erweiterung:

  • Rufen Sie auf diesem Tab scripting.insertCSS() oder scripting.executeScript() auf, wenn die Berechtigung "scripting" ebenfalls 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 Prinzip wird mit "activeTab" vorübergehend die Hostberechtigung 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

Die folgenden Nutzergesten aktivieren die Berechtigung "activeTab":