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. 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":

Senza scheda attiva

Con "activeTab":

Con scheda attiva

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() o scripting.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":