Mit der Berechtigung „"activeTab"
“ erhält eine Erweiterung vorübergehend Zugriff auf den aktuell aktiven Tab, wenn
Der Nutzer ruft die Erweiterung auf, z. B. indem er auf die Aktion klickt. Zugriff auf den Tab
bleibt bestehen, solange sich der Nutzer auf dieser Seite befindet. Der Zugriff wird widerrufen, wenn der Nutzer die Seite verlässt oder den Tab schließt.
Wenn der Nutzer die Erweiterung z. B. auf https://beispiel.de aufruft und dann
https://beispiel.de/foo aufruft, hat die Erweiterung weiterhin Zugriff auf die Seite. Wenn die
ruft https://chromium.org auf und der Zugriff wurde widerrufen.
Diese Option dient als Alternative für viele Anwendungsfälle von "<all_urls>"
, es wird jedoch keine Warnmeldung angezeigt.
während der Installation:
Ohne "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
});
}
});
Motivation
Nehmen wir als Beispiel eine Web-Clipping-Erweiterung mit einer Aktion und einem Kontextmenüelement. Dieses benötigt die Erweiterung möglicherweise nur dann auf Tabs, wenn auf ihre Aktion geklickt oder ihre Kontextmenüelement ausgeführt wird.
Ohne "activeTab"
müsste diese Erweiterung uneingeschränkten, dauerhaften Zugriff auf jede Website anfordern,
damit es seine Arbeit ausführen kann, falls es
vom Nutzer aufgerufen werden sollte. Das ist eine Menge
auf eine so einfache Erweiterung zu verlassen. Sollte eine Erweiterung gehackt werden,
erhält Zugriff auf alle Funktionen der Erweiterung.
Erweiterungen mit der Berechtigung "activeTab"
hingegen erhalten als Antwort nur Zugriff auf einen Tab.
einer expliziten Nutzergeste. Wenn die Erweiterung manipuliert wurde, muss der Angreifer warten, bis der
, um die Erweiterung aufzurufen, bevor Zugriff erhalten wird. Dieser Zugriff besteht nur,
bis der Tab wieder verfügbar ist,
aufgerufen oder geschlossen ist.
Was "activeTab" erlaubt
Solange die Berechtigung "activeTab"
für einen Tab aktiviert ist, kann eine Erweiterung:
- Rufen Sie auf diesem Tab
scripting.insertCSS()
oderscripting.executeScript()
auf, wenn die Berechtigung"scripting"
ebenfalls deklariert ist (siehe 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 Hostberechtigungen. - Netzwerkanfragen auf dem Tab an den Hauptframe des Tabs mit der Methode webRequest abfangen der API erstellen. Die Erweiterung ruft vorübergehend Hostberechtigungen für den Hauptframe des Tabs ab.
ActiveTab aufrufen
Die folgenden Nutzergesten aktivieren die Berechtigung "activeTab"
:
- Eine Aktion ausführen
- Ausführen eines Kontextmenüelements
- Tastenkombination über die Commands API ausführen
- Annehmen eines Vorschlags von der Omnibox API