L'autorizzazione "activeTab"

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. L'accesso alla scheda dura mentre l'utente è nella pagina in questione e viene revocato quando l'utente esce dalla scheda o la chiude. Ad esempio, se l'utente richiama l'estensione su https://example.com e poi visita https://example.com/foo, l'estensione continuerà ad avere accesso alla pagina. Se l'utente visita il sito https://chromium.org, l'accesso viene revocato.

Questa funzione è un'alternativa per molti utilizzi di "<all_urls>", ma mostra nessun messaggio di avviso durante l'installazione:

Senza "activeTab":

Senza activeTab

Con "activeTab":

Con activeTab

Esempio

Guarda 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
}

un dipendente di un servizio:

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

Prendiamo in considerazione un'estensione di clip web che abbia un'azione e una voce di menu contestuale. Questa estensione potrebbe dover accedere alle schede solo quando viene fatto clic sulla sua azione o quando viene eseguita la voce di menu contestuale.

Senza "activeTab", questa estensione dovrebbe richiedere l'accesso completo e permanente a ogni sito web, proprio per poter svolgere il proprio lavoro se fosse stata richiamata dall'utente. È un grande potere da affidare a un'estensione così semplice. E se l'estensione viene compromessa, l'utente malintenzionato può accedere a tutto ciò che conteneva.

Al contrario, un'estensione con l'autorizzazione "activeTab" ottiene l'accesso a una scheda solo in risposta a un gesto esplicito dell'utente. Se l'estensione viene compromessa, l'utente malintenzionato deve attendere che l'utente richiami l'estensione prima di ottenere l'accesso. L'accesso dura solo fino a quando la scheda viene aperta o chiusa.

Cosa consente "activeTab"

Mentre per una scheda è abilitata l'autorizzazione "activeTab", un'estensione può:

  • Chiama scripting.insertCSS() o scripting.executeScript() in quella scheda se è stata dichiarata anche l'autorizzazione "scripting" (come nell'esempio precedente).
  • Recupera l'URL, il titolo e la favicon per la scheda tramite un'API che restituisce un oggetto tabs.Tab (in pratica, "activeTab" concede temporaneamente l'autorizzazione host).
  • Intercetta le richieste di rete nella scheda verso l'origine del frame principale della scheda utilizzando l'API webRequest. L'estensione riceve temporaneamente le autorizzazioni di host per l'origine del frame principale della scheda.

Richiamo di activeTab in corso...

I seguenti gesti dell'utente attivano l'autorizzazione "activeTab":