Berechtigungen deklarieren und Nutzer warnen

Ob eine Erweiterung auf Websites und die meisten Chrome APIs zugreifen kann, wird durch die deklarierten Berechtigungen bestimmt. Berechtigungen sollten auf das beschränkt werden, was für die Funktionalität erforderlich ist. Das Einschränken von Berechtigungen sorgt für die Funktionen einer Erweiterung und reduziert das mögliche Eindringen von Daten, wenn die Erweiterung von einem Angreifer manipuliert wird. Schützen Sie Erweiterungen und ihre Nutzer, indem Sie explizite, minimale und optionale Berechtigungen implementieren.

Berechtigungen organisieren

Berechtigungen sind bekannte Strings, die auf eine Chrome API oder Übereinstimmungsmuster verweisen, die Zugriff auf einen oder mehrere Hosts gewähren. Sie sind im Manifest aufgelistet und als erforderliche Berechtigungen oder optionale Berechtigungen angegeben.

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

Beschränken Sie die erforderlichen Berechtigungen auf die Berechtigungen, die für die Hauptfunktion der Erweiterung erforderlich sind. Eine Erweiterung sollte nicht mehr Berechtigungen anfordern, als sie derzeit benötigt. Sorgen Sie also nicht dafür, dass sie zukunftssicher ist, indem Sie Berechtigungen anfordern, die für Updates erforderlich sein könnten.

Berechtigungen, die für optionale Funktionen erforderlich sind, sollten als optionale Berechtigungen registriert werden. Nutzer können dann entscheiden, wie viel Zugriff sie einer Erweiterung zur Verfügung stellen möchten und welche Funktionen sie sich wünschen.

Erforderliche Berechtigungen ermitteln

Für eine einfache Erweiterung müssen möglicherweise mehrere Berechtigungen angefordert werden. Bei vielen Berechtigungen werden bei der Installation Warnungen angezeigt. Nutzer vertrauen eher einer Erweiterung mit eingeschränkten Warnungen oder wenn ihnen Berechtigungen erklärt werden.

Warnungen zu Erweiterungsberechtigungen bei der Installation

Sie können damit die Hauptfunktionen einer Erweiterung und die dafür erforderlichen Berechtigungen ermitteln. Machen Sie Features gegebenenfalls optional, wenn sie Berechtigungen mit Warnungen erfordern.

Optionale Berechtigungen mit Ereignissen auslösen

Die Hauptfunktion der Beispielerweiterung für optionale Berechtigungen überschreibt die Seite „Neuer Tab“. Eine Funktion ist die Anzeige des Tagesziels des Nutzers. Für dieses Feature ist nur die Berechtigung storage erforderlich, die keine Warnung enthält.

Erweiterungsschaltfläche zum Aktivieren zusätzlicher Funktionen

Die Erweiterung verfügt über eine zusätzliche Funktion, mit der die Top-Websites des Nutzers angezeigt werden. Für diese Funktion ist die Berechtigung topSites erforderlich, für die eine Warnung angezeigt wird.

Erweiterungswarnung für topSites API

Wenn Sie Features entwickeln, die auf Berechtigungen mit Warnungen als optional basieren, und diese Features organisch einführen, erhalten Nutzer eine risikofreie Einführung in die Erweiterung. Außerdem haben Nutzer so die Möglichkeit, die Nutzung mit einer Erweiterung weiter anzupassen, und haben die Möglichkeit, Warnungen zu erklären.

Die Berechtigung „activeTab“ ersetzen

Die Berechtigung activeTab gewährt vorübergehenden Zugriff auf die Website, auf der sich der Nutzer befindet, und ermöglicht der Erweiterung, die Berechtigung "tabs" auf dem aktuellen Tab zu verwenden. Es ersetzt in vielen Fällen die Notwendigkeit von "<all_urls>" und zeigt bei der Installation keine Warnung an.

Ohne ActiveTab:

Benutzeroberfläche für Berechtigungen ohne ActiveTab

Mit ActiveTab:

Benutzeroberfläche für Berechtigungen mit „activeTab“

Die Berechtigung activeTab gewährt einer Erweiterung temporären Zugriff auf den aktuell aktiven Tab, wenn der Nutzer die Erweiterung aufruft. Wenn die Erweiterung manipuliert wurde, muss der Angreifer warten, bis der Nutzer die Erweiterung aufruft, bevor er Zugriff erhält. Dieser Zugriff würde nur so lange gelten, bis der Tab aufgerufen oder geschlossen wird.

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.
  • 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.

Durch folgende Nutzergesten wird activeTab aktiviert:

Zugriff gewähren

Wenn eine Erweiterung auf file://-URLs zugreifen muss oder im Inkognitomodus betrieben werden muss, müssen Nutzer den Zugriff auf diese Funktionen auf der Detailseite der Erweiterung unter chrome://extensions aktivieren.

Datei-URLs und den Inkognitomodus auf der Detailseite der Erweiterung zulassen

Eine Erweiterung kann erkennen, ob sie im Inkognitomodus aktiviert ist, indem sie extension.isAllowedIncognitoAccess() aufruft, oder ob sie auf file://-URLs mit extension.isAllowedFileSchemeAccess() ausgeführt werden kann .

Informationen zu Berechtigungen

Berechtigungswarnungen beschreiben die Berechtigungen, die eine API Nutzern der Erweiterung gewährt. Einige dieser Warnungen sind jedoch möglicherweise auf den ersten Blick nicht offensichtlich. Wenn Sie beispielsweise die Berechtigung "tabs" hinzufügen, erscheint eine scheinbar irrelevante Warnung: Die Erweiterung kann Ihre Browseraktivitäten lesen. Obwohl die chrome.tabs API möglicherweise nur zum Öffnen neuer Tabs verwendet wird, kann sie auch verwendet werden, um die URL zu sehen, die mit jedem neu geöffneten Tab verknüpft ist, indem sie die entsprechenden tabs.Tab-Objekte verwendet.

Implementieren Sie nach Möglichkeit optionale Berechtigungen oder eine weniger leistungsfähige API, um Alarmwarnungen zu vermeiden.

Warnungen ansehen

Wenn eine Erweiterung als entpackte Datei geladen wird, werden keine Berechtigungswarnungen angezeigt. Wenn Sie sich die Berechtigungswarnungen einer Erweiterung ansehen möchten, rufen Sie chrome://extensions auf, prüfen Sie, ob der Entwicklermodus aktiviert ist, und klicken Sie auf PACK-ERWEITERUNG.

&quot;Entwicklermodus&quot; aktiviert, dann &quot;Click Pack&quot;-Erweiterung auswählen

Geben Sie im Feld für das Stammverzeichnis der Erweiterung den Pfad zum Ordner der Erweiterung an und klicken Sie dann auf die Schaltfläche Erweiterung packen. Ignorieren Sie das Feld Privater Schlüssel beim ersten Paket.

Erweiterungspfad und dann Klickpaket-Erweiterung angeben

Chrome erstellt zwei Dateien, eine .crx-Datei und eine .pem-Datei, die den privaten Schlüssel der Erweiterung enthält.

Gepackte Erweiterungsdateien

Verlieren Sie den privaten Schlüssel nicht. Bewahren Sie die Datei .pem an einem geheimen und sicheren Ort auf. Dazu muss die Erweiterung aktualisiert werden.

Installieren Sie die Datei .crx, indem Sie sie auf der Verwaltungsseite der Chrome-Erweiterung ablegen.

Zu installierende Datei ablegen

Nachdem Sie die .crx-Datei abgelegt haben, fragt der Browser, ob die Erweiterung hinzugefügt werden kann, und zeigt eine Warnung an.

Warnung für Erweiterung „Neuer Tab“

Berechtigungen mit Warnungen

Hinweis:Berechtigungstabellen werden auf Best-Effort-Basis aktualisiert und können leicht von den aktuellen Warnungen abweichen. Außerdem werden für einige Berechtigungen in Kombination mit anderen Berechtigungen möglicherweise keine Warnungen angezeigt. Beispielsweise wird die "tabs"-Warnung nicht angezeigt, wenn die Erweiterung auch "<all_urls>" anfordert. Führen Sie die Schritte unter Warnungen ansehen aus, um die zuletzt für Erweiterungsberechtigungen angezeigten Warnungen zu prüfen.

Berechtigung Beschreibung Warnung
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
Gewährt der Erweiterung Zugriff auf alle Hosts. Möglicherweise müssen Sie Hostberechtigungen mithilfe der Berechtigung activeTab nicht deklarieren. Alle Ihre Daten auf von Ihnen besuchten Websites lesen und ändern
"https://HostName.com/" Gewährt der Erweiterung Zugriff auf "https://HostName.com/". Möglicherweise müssen Sie Hostberechtigungen mithilfe der Berechtigung activeTab nicht deklarieren. Daten auf HostName.com lesen und ändern
"bookmarks" Gewährt Ihrer Erweiterung Zugriff auf die chrome.bookmarks API. Lesezeichen lesen und ändern
"clipboardRead" Erforderlich, wenn die Erweiterung document.execCommand('paste') verwendet. Daten lesen, die Sie kopieren und einfügen
"clipboardWrite" Gibt an, dass die Erweiterung document.execCommand('copy') oder document.execCommand('cut') verwendet. Daten ändern, die du kopierst und einfügst
"contentSettings" Gewährt Ihrer Erweiterung Zugriff auf die chrome.contentSettings API. Einstellungen ändern, über die der Websitezugriff auf Funktionen wie Cookies, JavaScript, Plug-ins, Standort, Mikrofon oder Kamera gesteuert wird
"debugger" Gewährt Ihrer Erweiterung Zugriff auf die chrome.debugger API.
  • Auf das Back-End für den Seiten-Debugger zugreifen
  • Alle Ihre Daten auf von Ihnen besuchten Websites lesen und ändern
"declarativeNetRequest" Gewährt Ihrer Erweiterung Zugriff auf die chrome.declarativeNetRequest API. Seiteninhalte blockieren
"desktopCapture" Gewährt Ihrer Erweiterung Zugriff auf die chrome.desktopCapture API. Inhalte des Bildschirms aufnehmen
"downloads" Gewährt Ihrer Erweiterung Zugriff auf die chrome.downloads API. Downloads verwalten
"geolocation" Die Erweiterung kann die HTML5 Geolocation API verwenden, ohne den Nutzer nach einer Berechtigung fragen zu müssen. Ihren physischen Standort erkennen
"history" Gewährt Ihrer Erweiterung Zugriff auf die chrome.history API. Browserverlauf lesen und ändern
"management" Gewährt der Erweiterung Zugriff auf die chrome.management API. Apps, Erweiterungen und Designs verwalten
"nativeMessaging" Die Erweiterung erhält Zugriff auf die native Messaging API. Mit zusammenarbeitenden nativen Anwendungen kommunizieren
"notifications" Gewährt Ihrer Erweiterung Zugriff auf die chrome.notifications API. Benachrichtigungen anzeigen
"pageCapture" Gewährt der Erweiterung Zugriff auf die chrome.pageCapture API. Alle Ihre Daten auf von Ihnen besuchten Websites lesen und ändern
"privacy" Die Erweiterung erhält Zugriff auf die chrome.privacy API. Datenschutzeinstellungen ändern
"proxy" Gewährt der Erweiterung Zugriff auf die chrome.proxy API. Alle Ihre Daten auf von Ihnen besuchten Websites lesen und ändern
"system.storage" Gewährt der Erweiterung Zugriff auf die chrome.system.storage API. Speichergeräte erkennen und auswerfen
"tabCapture" Gewährt den Erweiterungen Zugriff auf die chrome.tabCapture API. Alle Ihre Daten auf von Ihnen besuchten Websites lesen und ändern
"tabs" Gewährt der Erweiterung Zugriff auf privilegierte Felder der Tab-Objekte, die von verschiedenen APIs wie chrome.tabs und chrome.windows verwendet werden. In vielen Fällen muss die Erweiterung nicht die Berechtigung "tabs" deklarieren, um diese APIs nutzen zu können. Browserverlauf lesen
"topSites" Gewährt der Erweiterung Zugriff auf die chrome.topSites API. Liste der am häufigsten besuchten Websites lesen
"ttsEngine" Gewährt der Erweiterung Zugriff auf die chrome.ttsEngine API. Alle mit künstlicher Sprachausgabe gesprochenen Texte lesen
"webNavigation" Gewährt der Erweiterung Zugriff auf die chrome.webNavigation API. Browserverlauf lesen

Berechtigungen aktualisieren

Wenn Sie eine Erweiterung mit zusätzlichen Berechtigungen aktualisieren, wird sie möglicherweise vorübergehend deaktiviert. Der Nutzer muss sie wieder aktivieren, nachdem er den neuen Warnungen zugestimmt hat.

Wenn der Nutzer eine Erweiterung manuell aktualisiert, die jetzt die Berechtigung tabs enthält, wird auf der Verwaltungsseite eine Warnung angezeigt.

Berechtigung zum Hinzufügen von Tabs

Wenn die Erweiterung automatisch aktualisiert wird, wird sie deaktiviert, bis der Nutzer den neuen Berechtigungen zustimmt.

Die Erweiterung wurde deaktiviert

Berechtigungen erteilen

Dies lässt sich vermeiden, indem du das neue Feature optional angibst und optional_permissions im Manifest neue Aktualisierungen der Berechtigungen hinzufügst.