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 relativa azione. L'accesso alla scheda dura finché l'utente si trova 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 passa a https://example.com/foo, l'estensione continuerà ad avere accesso alla pagina. Se l'utente naviga all'indirizzo https://chromium.org, l'accesso viene revocato.

Questa opzione funge da alternativa per molti utilizzi di "<all_urls>", ma non mostra alcun messaggio di avviso durante l'installazione:

Senza "activeTab":

Senza activeTab

Con "activeTab":

Con activeTab

L'accesso non viene concesso a pagine con limitazioni, ad esempio le pagine chrome://.

Esempio

Consulta 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 the tab URL is not set, it is a restricted page.
  if (tab.url) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

Motivazione

Prendi in considerazione un'estensione per il ritaglio web che abbia un'azione e una voce di menu contestuale. Questa estensione potrebbe aver bisogno di accedere alle schede solo quando viene fatto clic sulla sua azione o quando viene eseguita la sua voce di menu contestuale.

Senza "activeTab", questa estensione dovrebbe richiedere l'accesso completo e permanente a ogni sito web, solo per poter funzionare se l'utente la chiamasse. È un sacco di potere da affidare a un'estensione così semplice. Se l'estensione viene compromessa, l'autore dell'attacco ottiene l'accesso a tutti i dati dell'estensione.

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. e l'accesso dura solo fino a quando non viene chiusa la scheda o non viene eseguita la navigazione.

Cosa consente "activeTab"

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

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

Richiamo di activeTab

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