Dichiara le autorizzazioni e avvisa gli utenti

La capacità di un'estensione di accedere ai siti web e la maggior parte delle API di Chrome è determinata dalle autorizzazioni dichiarate. Le autorizzazioni devono essere limitate solo a ciò che è necessario per la sua funzionalità. La limitazione delle autorizzazioni stabilisce le funzionalità di un'estensione e riduce le possibili incursioni dei dati se l'estensione viene compromessa da un utente malintenzionato. Proteggi le estensioni e i loro utenti implementando autorizzazioni esplicite, minime e facoltative.

Organizza le autorizzazioni

Le autorizzazioni sono stringhe note che fanno riferimento a un'API di Chrome o a pattern di corrispondenza che concedono l'accesso a uno o più host. Sono elencate nel manifest e specificate come autorizzazioni richieste o autorizzazioni facoltative.

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

Limita le autorizzazioni richieste solo a quelle necessarie per la funzionalità di base dell'estensione. Un'estensione non deve richiedere più autorizzazioni di quelle necessarie attualmente; non è consigliabile richiedere autorizzazioni che potrebbero essere necessarie con gli aggiornamenti per il futuro.

Le autorizzazioni necessarie per le funzionalità facoltative devono essere registrate come autorizzazioni facoltative. Ciò consente agli utenti di decidere il livello di accesso da fornire a un'estensione e le funzionalità desiderate.

Identifica le autorizzazioni richieste

Una semplice estensione potrebbe dover richiedere più autorizzazioni e molte autorizzazioni mostrano avvisi al momento dell'installazione. Gli utenti sono più propensi a considerare un'estensione con avvisi limitati o vengono spiegate loro le autorizzazioni.

Avvisi relativi alle autorizzazioni delle estensioni al momento dell'installazione

Identifica le funzionalità di base di un'estensione e le autorizzazioni richieste per l'estensione. Valuta la possibilità di rendere le funzionalità facoltative se richiedono autorizzazioni con avvisi.

Attivare autorizzazioni facoltative con eventi

La funzionalità di base dell'estensione di esempio per le autorizzazioni facoltative sostituisce la pagina Nuova scheda. Una funzionalità è la visualizzazione dell'obiettivo del giorno dell'utente. Questa funzionalità richiede solo l'autorizzazione di archiviazione, che non include un avviso.

Pulsante dell'estensione che attiva funzionalità aggiuntive

L'estensione ha una funzionalità aggiuntiva: mostra i siti principali dell'utente. Questa funzionalità richiede l'autorizzazione topSites, che presenta un avviso.

Avviso estensione per l'API topSites

Lo sviluppo di funzionalità che si basano sulle autorizzazioni con avvisi facoltativi e l'introduzione di queste funzionalità in modo organico offrono agli utenti un'introduzione all'estensione senza rischi. Inoltre, questo consente agli utenti di personalizzare ulteriormente la propria esperienza con un'estensione e crea opportunità per spiegare gli avvisi.

Sostituisci l'autorizzazione activeTab

L'autorizzazione activeTab concede l'accesso temporaneo al sito in cui si trova l'utente e consente all'estensione di usare l'autorizzazione "tabs" nella scheda corrente. In molti casi sostituisce la necessità di "<all_urls>" e non mostra alcun avviso al momento dell'installazione.

Senza activeTab:

UI delle autorizzazioni senza activeTab

Con activeTab:

UI delle autorizzazioni con activeTab

L'autorizzazione activeTab concede a un'estensione l'accesso temporaneo alla scheda attualmente attiva quando l'utente richiama l'estensione. Se l'estensione viene compromessa, l'utente malintenzionato deve attendere che l'utente richiami l'estensione prima di ottenere l'accesso e l'accesso durerà solo fino all'esplorazione o alla chiusura della scheda.

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 della scheda tramite un'API che restituisce un oggetto tabs.Tab.
  • 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.

I seguenti gesti dell'utente attivano activeTab:

Consentire l'accesso

Se un'estensione deve accedere agli URL di file:// o operare in modalità di navigazione in incognito, gli utenti dovranno abilitare l'accesso a tali funzionalità nella pagina dei dettagli dell'estensione all'indirizzo chrome://extensions.

Consenti URL dei file e modalità di navigazione in incognito nella pagina dei dettagli dell&#39;estensione

Un'estensione può rilevare se è abilitata in modalità di navigazione in incognito chiamando extension.isAllowedIncognitoAccess() o può essere eseguita su file:// URL con extension.isAllowedFileSchemeAccess() .

Informazioni sulle autorizzazioni

Esistono avvisi di autorizzazione per descrivere le funzionalità concesse da un'API agli utenti delle estensioni, ma alcuni di questi avvisi potrebbero non essere evidenti all'inizio. Ad esempio, l'aggiunta dell'autorizzazione "tabs" genera un avviso apparentemente non correlato: l'estensione può Leggere la tua attività di navigazione. Sebbene l'API chrome.tabs possa essere utilizzata solo per aprire nuove schede, può essere utilizzata anche per visualizzare l'URL associato a ogni scheda appena aperta utilizzando i relativi oggetti tabs.Tab.

Se possibile, implementa autorizzazioni facoltative o un'API meno potente per evitare allarmi avvisi.

Visualizzazione degli avvisi

Se un'estensione viene caricata come file non pacchettizzato, non verrà visualizzato alcun avviso relativo all'autorizzazione. Per visualizzare gli avvisi di autorizzazione di un'estensione, vai a chrome://extensions, assicurati che la modalità sviluppatore sia attivata e fai clic su COMPLETA ESTENSIONE.

È selezionata la modalità sviluppatore, quindi l&#39;estensione Click Pack

Specifica il percorso della cartella dell'estensione nel campo Directory principale dell'estensione, quindi fai clic sul pulsante Crea pacchetto estensione. Ignora il campo Chiave privata per un pacchetto la prima volta.

Specifica il percorso dell&#39;estensione e poi l&#39;estensione Click Pack

Chrome creerà due file, un file .crx e un file .pem, che contengono la chiave privata dell'estensione.

File di estensioni in pacchetto

Non perdere la chiave privata. Conserva il file .pem in un luogo segreto e sicuro; sarà necessario aggiornare l'estensione.

Installa il file .crx nella pagina Gestione dell'estensione di Chrome.

Trascina il file per installare

Dopo aver eliminato il file .crx, il browser chiederà se è possibile aggiungere l'estensione e visualizzare degli avvisi.

Avviso relativo all&#39;estensione Nuova scheda

Autorizzazioni con avvisi

Nota: le tabelle di autorizzazioni vengono aggiornate secondo il criterio del "best effort" e potrebbero contenere lievi discrepanze con gli avvisi attuali. Inoltre, alcune autorizzazioni potrebbero non mostrare avvisi se abbinate ad altre autorizzazioni. Ad esempio, l'avviso "tabs" non verrà visualizzato se l'estensione richiede anche "<all_urls>". Per verificare gli avvisi più recenti mostrati per le autorizzazioni delle estensioni, segui i passaggi in Visualizzazione degli avvisi.

Autorizzazione Descrizione Avviso
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
Concede l'accesso dell'estensione a tutti gli host. Potrebbe essere possibile evitare di dichiarare le autorizzazioni host utilizzando l'autorizzazione activeTab. Leggere e modificare tutti i dati sui siti web visitati
"https://HostName.com/" Concede l'accesso all'estensione a "https://HostName.com/". Potrebbe essere possibile evitare di dichiarare le autorizzazioni host utilizzando l'autorizzazione activeTab. Leggere e modificare i tuoi dati su HostName.com
"bookmarks" Concede all'estensione l'accesso all'API chrome.bookmarks. Leggere e modificare i preferiti
"clipboardRead" Obbligatorio se l'estensione utilizza document.execCommand('paste'). Leggere i dati copiati e incollati
"clipboardWrite" Indica che l'estensione utilizza document.execCommand('copy') o document.execCommand('cut'). Modificare i dati copiati e incollati
"contentSettings" Concede all'estensione l'accesso all'API chrome.contentSettings. Modificare le impostazioni che controllano l'accesso dei siti web a funzionalità quali cookie, JavaScript, plug-in, geolocalizzazione, microfono, fotocamera e così via
"debugger" Concede all'estensione l'accesso all'API chrome.debugger.
  • Accedere al backend del debugger di pagina
  • Leggere e modificare tutti i dati sui siti web visitati
"declarativeNetRequest" Concede all'estensione l'accesso all'API chrome.declarativeNetRequest. Bloccare i contenuti delle pagine
"desktopCapture" Concede all'estensione l'accesso all'API chrome.desktopCapture. Acquisisci i contenuti dello schermo
"downloads" Concede all'estensione l'accesso all'API chrome.downloads. Gestire i download
"geolocation" Consente all'estensione di utilizzare l'API di geolocalizzazione HTML5 senza richiedere l'autorizzazione all'utente. Rileva la tua posizione fisica
"history" Concede all'estensione l'accesso all'API chrome.history. Leggere e modificare la cronologia di navigazione
"management" Concede all'estensione l'accesso all'API chrome.management. Gestire app, estensioni e temi
"nativeMessaging" Concede all'estensione l'accesso all'API di messaggistica nativa. Comunicare con applicazioni native che collaborano
"notifications" Concede alla tua estensione l'accesso all'API chrome.notifications. Mostra notifiche
"pageCapture" Concede all'estensione l'accesso all'API chrome.pageCapture. Leggere e modificare tutti i dati sui siti web visitati
"privacy" Concede all'estensione l'accesso all'API chrome.privacy. Modificare le impostazioni relative alla privacy
"proxy" Concede all'estensione l'accesso all'API chrome.proxy. Leggere e modificare tutti i dati sui siti web visitati
"system.storage" Concede all'estensione l'accesso all'API chrome.system.storage. Identificare ed espellere i dispositivi di archiviazione
"tabCapture" Concede alle estensioni l'accesso all'API chrome.tabCapture. Leggere e modificare tutti i dati sui siti web visitati
"tabs" Concede all'estensione l'accesso ai campi con privilegi degli oggetti Tab utilizzati da diverse API, tra cui chrome.tabs e chrome.windows. In molti casi, l'estensione non deve dichiarare l'autorizzazione "tabs" per utilizzare queste API. Leggere la cronologia di navigazione
"topSites" Concede all'estensione l'accesso all'API chrome.topSites. Leggere un elenco dei siti web che visiti più di frequente
"ttsEngine" Concede all'estensione l'accesso all'API chrome.ttsEngine. Leggere tutto il testo pronunciato utilizzando la sintesi vocale
"webNavigation" Concede all'estensione l'accesso all'API chrome.webNavigation. Leggere la cronologia di navigazione

Aggiorna autorizzazioni

L'aggiornamento di un'estensione con autorizzazioni aggiuntive potrebbe disabilitarla temporaneamente. L'utente dovrà riattivarla dopo aver accettato eventuali nuovi avvisi.

Se l'utente aggiorna manualmente un'estensione che ora include l'autorizzazione Schede, riceverà un avviso nella pagina di gestione.

Autorizzazione aggiunta schede

Se l'estensione viene aggiornata automaticamente, verrà disattivata fino a quando l'utente non accetta le nuove autorizzazioni.

L&#39;estensione è stata disattivata

Accetta le autorizzazioni

Per evitare questo problema, rendi facoltativa la nuova funzionalità e aggiungi nuovi aggiornamenti delle autorizzazioni a optional_permissions nel manifest.