Was ist eine Browsererweiterung

Eine Browsererweiterung ist ein kleines Programm, das im Browser installiert wird und eine Schaltfläche hinzufügt, die besuchten Seiten verändert oder im Hintergrund arbeitet. Sie besteht aus demselben HTML, CSS und JavaScript wie eine Webseite, und was sie anfassen darf, steht in einer einzigen Datei, dem Manifest. Diese Seite liest ein echtes Zeile für Zeile.

Was eine Browsererweiterung ist

Eine Erweiterung ist ein Paket aus Webcode, das der Browser mit zusätzlichen Rechten ausführt. Sie kann eine Schaltfläche in die Symbolleiste setzen, die geöffneten Seiten lesen und verändern oder im Hintergrund auf ein Ereignis warten. Typische Aufgaben:

  • Werbung und Tracker auf jeder Seite blockieren;
  • gespeicherte Anmeldedaten aus einem Passwortmanager eintragen;
  • die gerade geöffnete Seite übersetzen;
  • Screenshots aufnehmen oder die Schritte einer Aufgabe als Anleitung aufzeichnen.

Der Unterschied zu einer Website ist die Reichweite. Eine Website sieht nur ihren eigenen Tab. Eine Erweiterung kann Zugriff über Tabs und Websites hinweg bekommen, und deshalb lohnt es sich, ihre Berechtigungen zu lesen, bevor man auf „Hinzufügen“ klickt.

Was eine Browsererweiterung ist, woraus sie besteht, was Manifest V3 ändert, was jede Berechtigung erreicht und wie Sie eine Erweiterung prüfen. 7 Minuten 28 Sekunden, gesprochen, mit Untertiteln.

Das Video auf eigener Seite öffnen

Erweiterung oder Plug-in

Die Wörter werden oft gleich verwendet, aber ein Plug-in war etwas anderes: nativer Code wie Flash, geladen über die alte NPAPI-Schnittstelle. Chrome und Firefox führen so etwas nicht mehr aus. Was Sie heute aus einem Store installieren, ist eine Erweiterung.

Das Prinzip ist nicht neu. Chrome begann 2009, Erweiterungen zu testen, Firefox stellte 2017 auf dasselbe WebExtensions-Format um, und Safari auf dem Mac unterstützt seit 2020 Erweiterungen, die für die Chrome-Schnittstelle geschrieben sind, laut dem Wikipedia-Artikel über Browsererweiterungen.

Woraus eine Erweiterung besteht

manifest.json
Die Erklärung, die Chrome liest, bevor irgendetwas läuft: Name, Version, Berechtigungen und welche Datei was tut. Alles Weitere in dieser Liste ist darin eingetragen.
Service Worker
Das Hintergrundskript. Es hat keine eigene Seite, wird durch Ereignisse geweckt (ein Klick auf das Symbol, eine Nachricht, ein Timer) und bei Leerlauf beendet.
Popup und Einstellungsseite
Gewöhnliche HTML-Seiten, die zur Erweiterung gehören: das Feld unter dem Symbol in der Symbolleiste und die Einstellungsseite.
Content Scripts
JavaScript, das in einer Webseite läuft und lesen und ändern kann, was darauf steht. Es wird entweder im Manifest für passende Websites angemeldet oder bei Bedarf über die Scripting-Schnittstelle eingefügt, wie Chromes Leitfaden zu Content Scripts beschreibt.
Speicher
Einstellungen und Daten, die der Browser auf Ihrem Rechner ablegt, über chrome.storage oder IndexedDB.

Was Manifest V3 ist

Manifest V3 ist die aktuelle Version des Manifest-Formats und der Regeln, die dazugehören. Laut Chromes Überblick über Manifest V3 sind die wichtigsten Änderungen:

  • Ein Service Worker, der bei Leerlauf beendet wird, ersetzt die Hintergrundseite, die dauerhaft lief;
  • Eine Erweiterung darf keinen Code mehr von einem Server nachladen: Alles, was sie ausführt, steckt in dem Paket, das der Store geprüft hat;
  • Werbeblocker und ähnliche Werkzeuge filtern Anfragen mit Regeln, die sie dem Browser vorab mitteilen (declarativeNetRequest), statt jede Anfrage im eigenen Code abzufangen.

Das alte Format wurde schrittweise abgeschaltet, laut Chromes Zeitplan für Manifest V2:

Wann Was sich geändert hat
Januar 2022 Der Chrome Web Store nimmt keine neuen öffentlichen Manifest-V2-Erweiterungen mehr an
31. März 2025 Manifest-V2-Erweiterungen sind für alle Nutzer standardmäßig deaktiviert, lassen sich aber wieder einschalten
24. Juli 2025 Mit Chrome 138 bleiben sie deaktiviert; Nutzer können sie nicht mehr einschalten
31. August 2026 Die verbliebenen Manifest-V2-Erweiterungen werden aus dem Chrome Web Store entfernt

Für Leserinnen und Leser heißt das: Jede Erweiterung, die sich heute aus dem Chrome Web Store installieren lässt, ist eine Manifest-V3-Erweiterung. Die Umstellung war umstritten: Die Electronic Frontier Foundation und andere Kritiker hielten ihr vor, dass sie die Möglichkeiten von Werbeblockern einschränkt, wie Wikipedia festhält. Manifest V3 macht eine Erweiterung nicht sicher; was sie erreichen kann, entscheiden weiterhin ihre Berechtigungen.

Ein echtes Manifest, Zeile für Zeile

Das ist das Manifest einer Erweiterung zum Aufzeichnen von Schritten, Version 1.4.0. Sie zeichnet eine Aufgabe im Browser als nummerierte Schritte mit Screenshots auf.

 1  {
 2    "manifest_version": 3,
 3    "name": "__MSG_extName__",
 4    "short_name": "stepkeep",
 5    "version": "1.4.0",
 6    "description": "__MSG_extDescription__",
 7    "default_locale": "en",
 8    "minimum_chrome_version": "116",
 9    "permissions": ["activeTab", "tabs", "storage", "scripting", "downloads"],
10    "optional_host_permissions": ["*://*/*"],
11    "storage": {
12      "managed_schema": "managed_schema.json"
13    },
14    "options_ui": {
15      "page": "src/options/options.html",
16      "open_in_tab": true
17    },
18    "background": {
19      "service_worker": "src/background/sw.js",
20      "type": "module"
21    },
22    "action": {
23      "default_title": "__MSG_actionTitle__",
24      "default_popup": "src/popup/popup.html",
25      "default_icon": { "16": "icons/icon16.png", "128": "icons/icon128.png" }
26    },
27    "icons": { "16": "icons/icon16.png", "128": "icons/icon128.png" }
28  }

Die Zeilen 1 bis 8 sind die Identität: Formatversion 3, der Name (je Sprache aus einer Textdatei eingesetzt), die Version und die älteste Chrome-Version, auf der sie läuft. Die Zeilen 14 bis 27 nennen die Einstellungsseite, den Service Worker und das Popup. Die Symbollisten sind hier auf zwei Größen gekürzt. Was die Erweiterung erreichen kann, entscheiden die Zeilen 9 bis 12. Die Warnungen stammen aus Chromes Berechtigungsliste; Chrome zeigt sie auf Deutsch in eigener Übersetzung:

Berechtigung Was sie erlaubt Warnung in Chrome Warum diese Erweiterung fragt
activeTab Zugriff auf den aktuellen Tab, erst nachdem der Nutzer die Erweiterung anklickt Keine Um den Screenshot des aufgezeichneten Tabs aufzunehmen
tabs Adresse und Titel der offenen Tabs „Read your browsing history“ (Browserverlauf lesen) Um zu wissen, welcher Tab aufgezeichnet wird und auf welcher Seite jeder Schritt passiert
storage Daten im Browser speichern, auf dem Rechner Keine Einstellungen und der Lizenzeintrag
scripting Ein Skript in einer Seite ausführen, auf die die Erweiterung schon Zugriff hat Keine Um den Aufzeichner beim Start der Aufnahme in die Seite einzufügen
downloads Dateien in den Download-Ordner speichern „Manage your downloads“ (Downloads verwalten) Um die exportierte PDF-, HTML- oder ZIP-Datei zu speichern
optional_host_permissions Nichts bei der Installation; später darf die Erweiterung Websites nach diesem Muster anfragen: *://*/* Keine bei der Installation; eine Abfrage, die eine Website nennt, wenn sie anfragt Beim Start einer Aufnahme fragt Chrome nach genau dieser Website, und man kann ablehnen
storage.managed_schema Einstellungen, die ein Administrator per Richtlinie setzen kann Keine Damit die IT Optionen für ein Team vorgeben kann

activeTab zeigt keine Warnung, weil es nur vorübergehend Zugriff auf die Website gibt, auf der der Nutzer gerade ist, in dem Moment, in dem er die Erweiterung aufruft, wie Chromes Leitfaden zu activeTab erklärt. Optionale Hostberechtigungen werden angefragt, während die Erweiterung läuft, mit chrome.permissions.request, laut der Referenz zur Permissions-Schnittstelle. Das Muster *://*/* sagt, welche Websites die Erweiterung anfragen darf, nicht, auf welche sie Zugriff hat. Wie ein Administrator eine Erweiterung für ein ganzes Unternehmen erlaubt oder sperrt, ist ein eigenes Thema, behandelt in Prozessdokumentation und Datenschutz.

Was im Manifest fehlt

  • Keine host_permissions. Pflicht-Hostzugriff wird bei der Installation erteilt. Eine Erweiterung, die dort alle Websites verlangt, zeigt schon vor dem Hinzufügen die Warnung „Alle Ihre Daten auf allen Websites lesen und ändern“.
  • Kein content_scripts-Block. Angemeldete Content Scripts laufen auf jeder passenden Seite, die Sie öffnen. Ohne diesen Block läuft von dieser Erweiterung nichts in einer Seite, bis es eingefügt wird, hier erst beim Start einer Aufnahme.
  • Kein webRequest. Sie kann die Anfragen des Browsers weder beobachten noch verändern.

Kann eine Erweiterung Passwörter sehen

Eine Erweiterung kann ein Passwort auf einer Seite sehen, auf die sie Zugriff hat, aber keine Schnittstelle für Erweiterungen gibt ihr die Liste der Passwörter, die Chrome gespeichert hat. Ein Content Script läuft in der Seite selbst. Es kann also ein ausgefülltes Passwortfeld lesen und jede Taste, die in der Seite gedrückt wird, genau wie der eigene Code der Seite. Das Risiko ist die Seite, nicht der Passwortspeicher.

Die Frage an eine Erweiterung lautet also: Auf welche Websites hat sie Zugriff?

  • „Alle Ihre Daten auf allen Websites lesen und ändern“: Sie kann in jeder Seite, die Sie öffnen, ein Skript ausführen, auch bei Ihrer Bank und in Ihrem Postfach.
  • Bei Klick: Sie bekommt eine Seite erst, wenn Sie in diesem Tab auf die Erweiterung klicken.
  • Eine bestimmte Website: Sie erreicht diese Website und keine andere.

Was eine Erweiterung mit diesem Zugriff macht, entscheidet ihr eigener Code. Der Aufzeichner oben speichert zum Beispiel, welches Element angeklickt oder ausgefüllt wurde, und dessen Beschriftung, nicht den eingetippten Text, und hält Seitenadressen als Herkunft plus Pfad fest, ohne Abfrageteil. Sein Screenshot zeigt ein Feld so, wie die Seite es darstellt; ein Passwortfeld erscheint also als Punkte. So ist der Code dieser einen Erweiterung geschrieben, es ist keine Regel für Erweiterungen allgemein.

Eine Erweiterung selbst prüfen

  1. Berechtigungen und Websitezugriff lesen. Öffnen Sie chrome://extensions und klicken Sie bei der Erweiterung auf „Details“. Dort stehen ihre Berechtigungen, und „Websitezugriff“ bietet „Bei Klick“, „Auf bestimmten Websites“ und „Auf allen Websites“. Stellen Sie die engste Stufe ein, mit der die Erweiterung noch funktioniert.
  2. Das Manifest lesen. Jede installierte Erweiterung liegt im Chrome-Profilordner unter Extensions/<id>/<version>/manifest.json; die 32 Buchstaben lange ID steht auf der Detailseite, und chrome://version zeigt den Profilpfad. Üblich sind %LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions unter Windows, ~/Library/Application Support/Google/Chrome/Default/Extensions unter macOS und ~/.config/google-chrome/Default/Extensions unter Linux. Auf einem Chromebook ist der Profilordner in der Dateien-App nicht erreichbar, dort ist die Detailseite die Prüfung.
  3. Beobachten, was sie sendet. Schalten Sie auf chrome://extensions den Entwicklermodus ein und klicken Sie bei der Erweiterung unter „Ansichten überprüfen“ auf „Service Worker“. Wählen Sie im DevTools-Fenster den Tab „Netzwerk“ und erledigen Sie mit der Erweiterung ihre eigentliche Aufgabe. Jede Anfrage, die sie im Hintergrund stellt, erscheint in der Liste; eine Erweiterung ohne Anfragen lässt sie leer. Popup und andere Seiten der Erweiterung haben eigene DevTools und brauchen denselben Blick.

Entfernen Sie danach die Erweiterungen, die Sie nicht mehr nutzen. Eine vergessene Erweiterung hat weiterhin den Zugriff, den Sie ihr gegeben haben.

Ein Schrittaufzeichner, der diese Prüfungen besteht

Wer eine Aufgabe in einer Web-App dokumentiert, landet mit diesen Prüfungen bei einem Aufzeichner, der jede Website einzeln anfragt und nichts sendet: Das Netzwerk-Panel bleibt beim Aufnehmen und Exportieren leer.

Quellen

Alle Seiten geprüft am .

  1. Wikipedia (englisch): Browser extension. Chrome-Erweiterungen seit 2009, Firefox WebExtensions 2017, Safari 2020; die Kritik der EFF und anderer an Manifest V3.
  2. Chrome for Developers: Content scripts. Content Scripts lesen und ändern die Seite; im Manifest angemeldet oder bei Bedarf eingefügt.
  3. Chrome for Developers: What is Manifest V3. Service Worker, kein nachgeladener Code, declarativeNetRequest.
  4. Chrome for Developers: Manifest V2 support timeline. Die Daten der Abschaltung von Manifest V2.
  5. Chrome for Developers: Permissions list. Was jede Berechtigung erlaubt und welche Warnung sie zeigt.
  6. Chrome for Developers: The activeTab permission. Vorübergehender Zugriff auf den aktuellen Tab nach einer Nutzeraktion, ohne Warnung.
  7. Chrome for Developers: chrome.permissions. Optionale Berechtigungen, zur Laufzeit angefragt.
  8. Paws Off (englisch): Chrome extension all-sites permission explained. host_permissions für alle Websites und die Warnung, die Chrome dafür bei der Installation zeigt.