Uprawnienie „activeTab”

Uprawnienie "activeTab" zapewnia rozszerzeniu tymczasowy dostęp do aktualnie aktywnej karty, gdy użytkownik wywoła rozszerzenie, np. klikając jego działanie. Dostęp do karty trwa, dopóki użytkownik jest na tej stronie, i jest odbierany, gdy użytkownik przejdzie na inną 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ę żadna wiadomość ostrzegawcza:

Bez "activeTab":

Bez activeTab

"activeTab":

Z activeTab

Dostęp do stron o ograniczonym dostępie, np. stron chrome://, nie jest przyznawany.

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

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

Motywacja

Rozważ użycie rozszerzenia do wycinania fragmentów stron internetowych, które ma działanieelement menu kontekstowego. To rozszerzenie może potrzebować dostępu do kart tylko wtedy, gdy klikniesz jego działanie lub gdy wykonasz 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ć, gdy użytkownik go potrzebuje. To duża moc, którą powierzasz tak prostemu rozszerzeniu. Jeśli rozszerzenie zostanie przejęte, atakujący uzyska dostęp do wszystkiego, do czego miało ono dostęp.

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, atakujący będzie musiał poczekać, aż użytkownik je uruchomi, aby uzyskać dostęp. Dostęp ten trwa tylko do momentu, gdy karta zostanie zamknięta lub nastąpi na niej nawigacja.

Co umożliwia „activeTab”

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

Wywoływanie activeTab

Te gesty użytkownika umożliwiają przyznanie uprawnienia "activeTab":