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.
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.
L'estensione ha una funzionalità aggiuntiva: mostra i siti principali dell'utente. Questa funzionalità richiede l'autorizzazione topSites, che presenta un avviso.
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:
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
otabs.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
:
- Esecuzione di un'azione nel browser
- Esecuzione di un'azione sulla pagina
- Esecuzione di una voce di menu contestuale
- Esecuzione di una scorciatoia da tastiera dall'API Commands
- Accettare un suggerimento dall'API omnibox
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.
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.
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.
Chrome creerà due file, un file .crx
e un file .pem
, che contengono la chiave privata dell'estensione.
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.
Dopo aver eliminato il file .crx
, il browser chiederà se è possibile aggiungere l'estensione e visualizzare degli avvisi.
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 |
---|---|---|
|
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. |
|
"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.
Se l'estensione viene aggiornata automaticamente, verrà disattivata fino a quando l'utente non accetta le nuove autorizzazioni.
Per evitare questo problema, rendi facoltativa la nuova funzionalità e aggiungi nuovi aggiornamenti delle autorizzazioni a optional_permissions
nel manifest.