Uprawnienie „activeTab”

Uprawnienie "activeTab" daje rozszerzeniu tymczasowy dostęp do obecnie aktywnej karty, gdy użytkownik wywołuje rozszerzenie, np. klikając jego działanie. Dostęp do karty trwa, dopóki użytkownik przegląda tę stronę, i jest unieważniane, 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 jeśli przejdziesz na stronę https://example.com/foo, rozszerzenie zachowa dostęp do tej strony. Jeśli użytkownik otworzy stronę https://chromium.org, dostęp zostanie unieważniony.

Jest to metoda alternatywna wobec wielu zastosowań "<all_urls>", ale nie wyświetla komunikatu ostrzegawczego podczas instalacji:

Bez "activeTab":

Bez aktywnej karty

"activeTab":

Z aktywnym kartą

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

Załóżmy, że masz rozszerzenie internetowe z akcją i pozycją menu kontekstowego. Ten może potrzebować dostępu do kart tylko po kliknięciu danego rozszerzenia lub element menu kontekstowego.

Bez "activeTab" to rozszerzenie wymagałoby pełnego, trwałego dostępu do każdej strony. tylko po to, aby działał, jeśli użytkownik go wywoła. To dużo które można powierzyć tak prostemu rozszerzeniu. Jeśli haker zostanie przejęty, uzyska dostęp do wszystkich elementów tego rozszerzenia.

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ć na w celu wywołania rozszerzenia przed uzyskaniem dostępu. Dostęp ten jest możliwy tylko do momentu, użytkownik lub produkt jest zamknięty.

Co „activeTab” zezwala

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

Wywołuję ActiveTab

Te gesty użytkownika włączają uprawnienie "activeTab":