Uprawnienie „activeTab”

Uprawnienie "activeTab" daje rozszerzeniu tymczasowy dostęp do obecnie aktywnej karty, gdy użytkownik wywoła rozszerzenie, na przykład klikając swoje działanie. Dostęp do karty jest ograniczony, gdy użytkownik znajduje się na danej stronie, i utracony, gdy użytkownik ją opuści lub zamknie. 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 zachowa dostęp do strony. Jeśli użytkownik otworzy stronę https://chromium.org, dostęp zostanie unieważniony.

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

Bez "activeTab":

Bez aktywnej karty

W "activeTab":

Z activeTab

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
}

Skrypt 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
    });
  }
});

Motywacja

Rozważmy rozszerzenie do przycinania z internetu, które ma przypisaną czynność i element menu kontekstowego. To rozszerzenie może potrzebować dostępu do kart tylko po kliknięciu odpowiedniego działania lub wykonaniu jego elementu menu kontekstowego.

Bez "activeTab" to rozszerzenie musiałby prosić o pełny i stały dostęp do każdej witryny, by mogło działać, jeśli zostanie wywołane przez użytkownika. To daje wiele możliwości, aby zdać się tak prostemu rozszerzeniu. Jeśli ktoś włamuje się na rozszerzenie, haker uzyska dostęp do wszystkich jego elementów.

Z kolei rozszerzenie z uprawnieniami "activeTab" uzyskuje dostęp do karty tylko w odpowiedzi na wyraźny gest użytkownika. Jeśli bezpieczeństwo rozszerzenia zostało naruszone, osoba przeprowadzająca atak musi poczekać, aż użytkownik wywoła to rozszerzenie, zanim uzyska dostęp. Ten dostęp będzie trwał tylko do czasu zamknięcia karty lub przejścia na nią.

Na co zezwala karta „activeTab”

Gdy uprawnienie "activeTab" jest włączone w przypadku karty, rozszerzenie może:

Wywołuję kartę aktywną

Uprawnienie "activeTab" włącza się za pomocą tych gestów użytkownika: