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
:
W 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
lubtabs.insertCSS
. - Pobierz URL, tytuł i favikonę tej karty za pomocą interfejsu API, który zwraca obiekt
tabs.Tab
(w zasadzieactiveTab
tymczasowo przyznaje uprawnieniatabs
). - 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:
- wykonania działania przeglądarki.
- wykonania działania na stronie.
- Uruchamianie elementu menu kontekstowego.
- Uruchamianie skrótu klawiszowego z interfejsu Commands API.
- Akceptowanie sugestii z interfejsu API omniboksu