Uprawnienie ActiveTab

Uprawnienie activeTab daje rozszerzeniu tymczasowy dostęp do obecnie aktywnej karty, gdy użytkownik wywoła rozszerzenie, na przykład klikając jego działanie w przeglądarce. Dostęp do karty jest ograniczony, gdy użytkownik znajduje się na danej stronie, i utracony, gdy użytkownik ją opuści lub zamknie.

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

Uwaga: od wersji M72 uprawnienie activeTab będzie przyznawane, dopóki użytkownik nie przejdzie do innego źródła. Oznacza to, że jeśli 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.

Bez activeTab:

Bez aktywnej karty

W activeTab:

Z activeTab

Przykład

Zobacz przykładowe rozszerzenie Page Redder:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

Motywacja

Rozważmy rozszerzenie do przycinania z internetu, które ma ustawione działanie w przeglądarce i element menu kontekstowego. To rozszerzenie potrzebuje dostępu do kart tylko po kliknięciu odpowiedniego działania w przeglądarce lub wykonaniu elementu menu kontekstowego.

Bez activeTab to rozszerzenie musiałby prosić o pełny, stały dostęp do każdej strony internetowej, aby 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 pozwala aktywna karta

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

  • Zadzwoń na tej karcie: tabs.executeScript lub tabs.insertCSS.
  • Pobierz URL, tytuł i favikonę tej karty za pomocą interfejsu API, który zwraca obiekt tabs.Tab (w zasadzie activeTab tymczasowo przyznaje uprawnienia tabs).
  • Przechwytywać żądania sieciowe na karcie do źródła ramki głównej karty za pomocą interfejsu API webRequest. Rozszerzenie tymczasowo uzyskuje uprawnienia hosta dotyczące źródła ramki głównej karty.

Wywołuję kartę aktywną

activeTab można włączyć za pomocą tych gestów użytkownika: