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 sull'azione nel browser. L'accesso alla scheda dura mentre l'utente è nella pagina in questione e viene revocato quando l'utente esce dalla scheda o la chiude.

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

Nota: a partire dalla versione M72, l'autorizzazione activeTab verrà concessa finché l'utente non passa a un'origine diversa. In altre parole, 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.

Senza activeTab:

Senza activeTab

Con activeTab:

Con activeTab

Esempio

Guarda l'estensione di esempio 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"'
  });
});

Motivazione

Prendiamo in considerazione un'estensione di clip web che abbia un'azione nel browser e una voce di menu contestuale. Questa estensione potrebbe dover accedere alle schede solo quando viene fatto clic sull'azione nel browser 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 il numero tabs.executeScript o tabs.insertCSS su quella scheda.
  • Recupera l'URL, il titolo e la favicon per quella scheda tramite un'API che restituisce un oggetto tabs.Tab (in pratica, activeTab concede temporaneamente l'autorizzazione tabs).
  • 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 activeTab: