Uprawnienie „activeTab”

Uprawnienie "activeTab" daje rozszerzeniu tymczasowy dostęp do aktywnej karty, gdy użytkownik wywoła rozszerzenie, na przykład klikając jego działanie. Dostęp do karty trwa, gdy użytkownik jest na tej stronie, i jest odbierany, gdy użytkownik opuści stronę lub zamknie kartę. Jeśli na przykład użytkownik wywoła rozszerzenie na stronie https://example.com, a następnie przejdzie na stronę https://example.com/foo, rozszerzenie nadal będzie miało dostęp do strony. Jeśli użytkownik przejdzie na stronę https://chromium.org, dostęp zostanie cofnięty.

Jest to alternatywa dla wielu zastosowań "<all_urls>", ale podczas instalacji nie wyświetla się komunikat ostrzegawczy:

Bez: "activeTab"

Bez uprawnienia activeTab

Z "activeTab":

Z uprawnieniem activeTab

Dostęp nie jest przyznawany do stron z ograniczonym dostępem, takich jak strony chrome://.

Przykład

Zobacz przykładowe rozszerzenie Page Redder:

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

browser.action.onClicked.addListener((tab) => {
  // If the tab URL is not set, it is a restricted page.
  if (tab.url) {
    browser.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

Motywacja

Weźmy pod uwagę rozszerzenie do wycinania stron internetowych, które ma działanie i element menu kontekstowego. To rozszerzenie może potrzebować dostępu do kart tylko wtedy, gdy klikniesz jego działanie lub gdy zostanie wykonany element menu kontekstowego.

Bez "activeTab" to rozszerzenie musiałoby prosić o pełny, stały dostęp do każdej witryny, aby móc działać, gdyby użytkownik je wywołał. To bardzo dużo możliwości jak na tak proste rozszerzenie. Jeśli rozszerzenie zostanie przejęte, haker uzyska dostęp do wszystkiego, co było dostępne dla rozszerzenia.

Z kolei rozszerzenie z uprawnieniem "activeTab" uzyskuje dostęp do karty tylko w odpowiedzi na wyraźny gest użytkownika. Jeśli rozszerzenie zostanie przejęte, osoba atakująca będzie musiała poczekać, aż użytkownik je wywoła, zanim uzyska dostęp. Dostęp jest możliwy tylko do momentu zamknięcia karty lub przejścia na inną stronę.

Na co pozwala uprawnienie „activeTab”

Gdy uprawnienie "activeTab" jest włączone na karcie, rozszerzenie może:

Wywoływanie activeTab

Uprawnienie "activeTab" jest włączane przez te gesty użytkownika: