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 przeglądarki. 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ę.

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

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

Bez activeTab:

Bez aktywnej karty

activeTab:

Z aktywnym kartą

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

Załóżmy, że masz rozszerzenie internetowe, które ma działanie przeglądarki i pozycję menu kontekstowego. Ten może potrzebować dostępu do kart tylko po kliknięciu odpowiedniego działania w przeglądarce lub element menu kontekstowego.

Bez activeTab to rozszerzenie wymagałoby pełnego, trwałego dostępu do każdej strony internetowej. 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.

Na co zezwala ActiveTab

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

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

Wywołuję ActiveTab

Te gesty umożliwiają korzystanie z usługi activeTab: