permissions
Typ | Array |
---|---|
Pflicht | Nein |
Manifest-Version | 2 oder höher |
Beispiel |
json
|
Verwenden Sie den Schlüssel permissions
, um spezielle Berechtigungen für Ihre Erweiterung anzufordern. Dieser Schlüssel ist ein Array von Strings, wobei jeder String eine Anfrage für eine Berechtigung darstellt.
Wenn Sie Berechtigungen über diesen Schlüssel anfordern, kann der Browser den Benutzer während der Installation darüber informieren, dass die Erweiterung bestimmte Rechte anfordert, und ihn um Bestätigung bitten, ob er bereit ist, diese Rechte zu gewähren. Der Browser kann dem Benutzer auch erlauben, die Privilegien einer Erweiterung nach der Installation zu überprüfen. Da die Anfrage zur Gewährung von Privilegien die Bereitschaft der Benutzer zur Installation Ihrer Erweiterung beeinflussen kann, lohnt sich eine sorgfältige Überlegung bei der Anforderung von Privilegien. Beispielsweise sollten Sie vermeiden, unnötige Berechtigungen anzufordern und in der Beschreibung Ihres Erweiterungsspeichers Informationen darüber bereitstellen, warum Sie Berechtigungen anfordern. Weitere Informationen zu den Überlegungen, die Sie beachten sollten, finden Sie im Artikel Request the right permissions.
Informationen darüber, wie Sie Berechtigungsanfragen testen und eine Vorschau anzeigen können, finden Sie unter Test permission requests auf der Extension Workshop-Seite.
Der Schlüssel kann drei Arten von Berechtigungen enthalten:
- Host-Berechtigungen (nur Manifest V2, Host-Berechtigungen werden im Manifest V3 oder höher im
host_permissions
Manifest-Schlüssel angegeben.) - API-Berechtigungen
- die
activeTab
-Berechtigung
Host-Berechtigungen
Hinweis: Wie Sie Host-Berechtigungen anfordern, hängt davon ab, ob Sie sie zur Installations- oder Laufzeit benötigen und welche Manifest-Version Ihre Erweiterung verwendet.
- Manifest V2:
- Installationsanforderung mit diesem (
permissions
) Manifestschlüssel. - Laufzeitanforderung mit dem
optional_permissions
Manifestschlüssel.
- Installationsanforderung mit diesem (
- Manifest V3 oder höher:
- Installationsanforderung mit dem
host_permissions
Manifestschlüssel. - Laufzeitanforderung mit dem
optional_host_permissions
Manifestschlüssel.
- Installationsanforderung mit dem
Host-Berechtigungen werden als Match-Muster angegeben, wobei jedes Muster eine Gruppe von URLs angibt, für die die Erweiterung zusätzliche Rechte anfordert. Zum Beispiel könnte eine Host-Berechtigung "*://developer.mozilla.org/*"
sein.
Die zusätzlichen Privilegien umfassen:
- Zugriff auf XMLHttpRequest und fetch für diese Ursprünge ohne Cross-Origin-Beschränkungen (auch für Anfragen von Content-Skripten)
- die Möglichkeit, tab-spezifische Metadaten wie die
url
-,title
- undfavIconUrl
-Eigenschaften vontabs.Tab
-Objekten ohne die "tabs"-Berechtigung zu lesen - die Fähigkeit, Inhaltsskripte und Stile programmgesteuert in Seiten einzufügen, die von diesen Ursprüngen geliefert werden
- die Fähigkeit, Ereignisse von der
webRequest
API für diese Hosts zu empfangen - die Fähigkeit, auf Cookies für diesen Host mit der
cookies
API zuzugreifen, sofern auch die"cookies"
API-Berechtigung enthalten ist - Umgehung des Trackingschutzes für Erweiterungsseiten, bei denen ein Host als vollständige Domain oder mit Wildcards angegeben ist. Inhaltsskripte können den Trackingschutz jedoch nur bei Hosts umgehen, die mit einer vollständigen Domain angegeben sind.
In Firefox erhalten Erweiterungen ab Version 56 automatisch Host-Berechtigungen für ihren eigenen Ursprung, der die Form hat:
moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
wobei 60a20a9b-1ad4-af49-9b6c-c64c98c37920
die interne ID der Erweiterung ist. Die Erweiterung kann diese URL programmatisch abrufen, indem sie extension.getURL()
aufruft:
browser.extension.getURL("");
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
API-Berechtigungen
API-Berechtigungen werden als Schlüsselwörter angegeben, wobei jedes Schlüsselwort eine WebExtension API benennt, die die Erweiterung verwenden möchte.
Diese Berechtigungen sind in Manifest V2 und höher verfügbar, sofern nicht anders angegeben:
activeTab
alarms
background
bookmarks
browserSettings
browsingData
captivePortal
clipboardRead
clipboardWrite
contentSettings
contextMenus
contextualIdentities
cookies
debugger
declarativeNetRequest
declarativeNetRequestFeedback
declarativeNetRequestWithHostAccess
devtools
(Diese Berechtigung wird implizit erteilt, wenn derdevtools_page
Manifestschlüssel vorhanden ist.)dns
downloads
downloads.open
find
geolocation
history
identity
idle
management
menus
menus.overrideContext
nativeMessaging
notifications
pageCapture
pkcs11
privacy
proxy
scripting
search
sessions
storage
tabGroups
tabHide
tabs
theme
topSites
unlimitedStorage
- 'userScripts' (siehe userScripts permission)
webNavigation
webRequest
webRequestAuthProvider
(Manifest V3 und höher)webRequestBlocking
webRequestFilterResponse
webRequestFilterResponse.serviceWorkerScript
In den meisten Fällen gewährt die Berechtigung nur den Zugriff auf die API, mit den folgenden Ausnahmen:
-
tabs
gibt Ihnen Zugriff auf privilegierte Teile dertabs
API ohne die Notwendigkeit für Host-Berechtigungen:Tab.url
,Tab.title
undTab.faviconUrl
.- In Firefox 85 und früher benötigen Sie auch
tabs
, wenn Sieurl
imqueryInfo
-Parameter vontabs.query()
einfügen möchten. Der Rest dertabs
API kann ohne Anforderung einer Berechtigung verwendet werden. - Ab Firefox 86 und Chrome 50 können übereinstimmende Host-Berechtigungen anstelle der "tabs"-Berechtigung verwendet werden.
- In Firefox 85 und früher benötigen Sie auch
-
webRequestBlocking
ermöglicht es Ihnen, das Argument"blocking"
zu verwenden, sodass Sie Anfragen modifizieren und abbrechen können. -
downloads.open
ermöglicht es Ihnen, diedownloads.open()
API zu nutzen. -
tabHide
ermöglicht es Ihnen, dietabs.hide()
API zu nutzen.
activeTab Berechtigung
Wenn eine Erweiterung über die Berechtigung "activeTab"
verfügt, werden der Erweiterung, wenn ein Benutzer mit der Erweiterung interagiert, zusätzliche Privilegien nur für den aktiven Tab gewährt.
Diese Interaktionen sind als Benutzeraktionen bekannt und umfassen:
- Klicken auf die Symbolleistenschaltfläche oder Page Action der Erweiterung.
- Auswahl eines Kontextmenüeintrags der Erweiterung.
- Aktivierung einer Tastenkombination, die von der Erweiterung definiert wurde (ab Firefox 63).
- Klicken auf eine Schaltfläche auf einer mit der Erweiterung gebündelten Seite.
- Klicken auf einen Erweiterungsvorschlag in der Adressleiste (Omnibox) (ab Firefox 142).
Die zusätzlichen Privilegien sind:
- Die Möglichkeit, programmatisch JavaScript oder CSS in den Tab einzufügen (siehe Laden von Inhaltsskripten).
- Zugriff auf die privilegierten Teile der Tabs-API für den aktuellen Tab:
Tab.url
,Tab.title
undTab.faviconUrl
.
Das Ziel dieser Berechtigung ist es, Erweiterungen zu ermöglichen, ein allgemeines Anwendungsfall zu erfüllen, ohne ihnen sehr mächtige Berechtigungen zu geben. Viele Erweiterungen möchten "etwas auf der aktuellen Seite tun, wenn der Benutzer es fordert".
Zum Beispiel wollen wir eine Erweiterung betrachten, die ein Skript auf der aktuellen Seite ausführen möchte, wenn der Benutzer auf eine Browseraktion klickt. Wenn die activeTab
-Berechtigung nicht existieren würde, müsste die Erweiterung die Host-Berechtigung <all_urls>
anfordern. Aber dies gibt der Erweiterung mehr Macht als nötig: Sie könnte nun Skripte in jedem Tab, jederzeit ausführen, anstatt nur im aktiven Tab und nur als Reaktion auf eine Benutzeraktion.
Hinweis: Sie können nur auf die Tab-/Daten zugreifen, die vorhanden waren, als die Benutzerinteraktion stattfand (z. B. der Klick). Wenn der aktive Tab navigiert (z. B. durch das Laden eines neuen Abschnitts oder ein anderes Ereignis), gewährt die Berechtigung Ihnen keinen Zugriff mehr auf den Tab.
Die activeTab
-Berechtigung ermöglicht Skripting-Zugriff auf die oberste Seite des Tabs und frames mit gleichem Ursprung. Für das Ausführen von Skripten oder das Ändern von Stilen innerhalb von cross-origin Frames können zusätzliche Host-Berechtigungen erforderlich sein. Natürlich werden auch Einschränkungen und Begrenzungen in Bezug auf bestimmte Sites und URI-Schemata angewendet.
In der Regel ist der Tab, dem activeTab
gewährt wird, der aktive Tab, mit einer Ausnahme. Eine Erweiterung kann mit der menus
API ein Menüelement erstellen, das angezeigt wird, wenn der Benutzer mit der rechten Maustaste auf einen Tab klickt. Das heißt, ein Menü auf einem Element im Tabstrip, das es dem Benutzer ermöglicht, von einem Tab zu einem anderen zu wechseln. Wenn der Benutzer auf dieses Menü klickt, wird die activeTab
-Berechtigung für den Tab gewährt, den der Benutzer anklickt, auch wenn es sich nicht um den aktiven Tab handelt (ab Firefox 63, Firefox Bug 1446956).
Zugriff auf die Zwischenablage
Es gibt zwei Berechtigungen, die es der Erweiterung ermöglichen, mit der Zwischenablage zu interagieren:
clipboardWrite
-
Schreiben in die Zwischenablage unter Verwendung von
Clipboard.write()
,Clipboard.writeText()
,document.execCommand("copy")
oderdocument.execCommand("cut")
clipboardRead
-
Lesen aus der Zwischenablage unter Verwendung von
Clipboard.read()
,Clipboard.readText()
oderdocument.execCommand("paste")
Details finden Sie unter Interact with the clipboard.
Unbegrenzter Speicher
Die Berechtigung unlimitedStorage
:
- Ermöglicht Erweiterungen, alle Quoten zu übersteigen, die von der
storage.local
API auferlegt werden - Ermöglicht es Erweiterungen in Firefox, eine "persistent" IndexedDB-Datenbank zu erstellen, ohne dass der Browser den Benutzer zur Genehmigung auffordert, wenn die Datenbank erstellt wird.
Beispiele
"permissions": ["*://developer.mozilla.org/*"]
In Manifest V2 nur, fordere privilegierten Zugriff auf Seiten unter developer.mozilla.org
.
"permissions": ["tabs"]
Fordere Zugriff auf die privilegierten Teile der tabs
API.
"permissions": ["*://developer.mozilla.org/*", "tabs"]
In Manifest V2 nur, fordere beide oben genannten Berechtigungen an.
Browser-Kompatibilität
Loading…