L'autorizzazione "activeTab"
concede a un'estensione l'accesso temporaneo alla scheda attualmente attiva quando
l'utente richiama l'estensione, ad esempio facendo clic sulla sua azione. Accesso alla scheda
dura finché l'utente è sulla pagina e viene revocato quando l'utente esce dalla pagina o chiude la scheda.
Ad esempio, se l'utente richiama l'estensione su https://example.com e poi
accede a https://example.com/foo, l'estensione continuerà ad avere accesso alla pagina. Se
l'utente accede a https://chromium.org, l'accesso è stato revocato.
Questa soluzione è alternativa per molti utilizzi di "<all_urls>"
, ma visualizza nessun messaggio di avviso
durante l'installazione:
Senza "activeTab"
:
Con "activeTab"
:
Esempio
Vedi l'estensione di esempio 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 (!tab.url.includes('chrome://')) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
Motivazione
Prendi in considerazione un'estensione di taglio web che abbia un'azione e una voce di menu contestuale. Questo potrebbe avere bisogno di accedere alle schede solo quando l'utente fa clic sulla relativa azione o quando viene eseguita la voce di menu contestuale.
Senza "activeTab"
, questa estensione deve richiedere l'accesso completo e permanente a ogni sito web,
solo per fare il proprio lavoro
se gli è capitato di essere richiamato dall'utente. Sono molte le
potersi affidare a un'estensione così semplice. E se l’estensione viene compromessa, l’aggressore
accede a tutti i contenuti dell'estensione.
Al contrario, un'estensione con autorizzazione "activeTab"
ottiene l'accesso solo a una scheda in risposta
a un gesto esplicito dell'utente. Se l’estensione viene compromessa, l’aggressore deve attendere che l’estensione
all'utente di richiamare l'estensione prima di ottenere l'accesso. L'accesso durerà solo fino a quando la scheda
navigato o è chiuso.
Che cosa "activeTab" consente
Mentre l'autorizzazione "activeTab"
è attiva per una scheda, un'estensione può:
- Richiama
scripting.insertCSS()
oscripting.executeScript()
in questa scheda se è stata dichiarata anche l'"scripting"
autorizzazione (come nell'esempio sopra). - Recupera l'URL, il titolo e la favicon di quella scheda tramite un'API che restituisce un oggetto
tabs.Tab
(in pratica,"activeTab"
concede temporaneamente l'autorizzazione di organizzatore). - Intercetta le richieste di rete nella scheda con l'origine del frame principale della scheda utilizzando webRequest tramite Google Cloud CLI o tramite l'API Compute Engine. L'estensione riceve temporaneamente le autorizzazioni host per l'origine del frame principale della scheda.
Richiamo di ActiveTab
I seguenti gesti dell'utente abilitano l'autorizzazione "activeTab"
:
- Esecuzione di un'azione
- Esecuzione di una voce del menu contestuale
- Esecuzione di una scorciatoia da tastiera dall'API dei comandi
- Accettare un suggerimento dall'API omnibox