La capacità di un'estensione di accedere a siti web e la maggior parte delle API di Chrome dipende dal suo autorizzazioni. Le autorizzazioni devono essere limitate solo a ciò che è necessario per la sua funzionalità. La limitazione delle autorizzazioni stabilisce le capacità di un'estensione e riduce le possibili incursioni nei dati se l'estensione viene compromessa da un utente malintenzionato. Proteggi le estensioni e i relativi utenti implementando autorizzazioni esplicite, minime e facoltative.
Organizza le autorizzazioni
Le autorizzazioni sono stringhe note che fanno riferimento a un'API di Chrome o pattern di corrispondenza che concedono l'accesso a per uno o più host. Sono elencate nel manifest e specificate come autorizzazioni obbligatorie oppure 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 necessarie solo a ciò che è necessario per la funzionalità di base dell'estensione. Un l'estensione non deve richiedere più autorizzazioni di quelle di cui ha bisogno attualmente. non creare una prova futura e richiedere le autorizzazioni necessarie con gli aggiornamenti.
Le autorizzazioni necessarie per le funzionalità facoltative devono essere registrate come autorizzazioni facoltative. Questo consente agli utenti di decidere il livello di accesso che intendono fornire un'estensione e quali funzionalità desiderato.
Identifica le autorizzazioni richieste
Un'estensione semplice potrebbe dover richiedere più autorizzazioni e molte autorizzazioni vengono visualizzate avvisi sull'installazione. Gli utenti sono più propensi a fidarsi di un'estensione con avvisi limitati o quando vengono spiegate le autorizzazioni.
Identificare la funzionalità di base di un'estensione e le autorizzazioni necessarie. Prendi in considerazione rendendo le funzionalità facoltative se richiedono autorizzazioni con avvisi.
Attiva autorizzazioni facoltative con eventi
La funzionalità di base dell'estensione di esempio relativa alle autorizzazioni facoltative sostituisce la pagina Nuova scheda. Una funzionalità è visualizzare l'obiettivo della giornata dell'utente. Questa funzionalità richiede solo lo spazio di archiviazione che non include un avviso.
L'estensione ha una funzionalità aggiuntiva: che mostrano i siti principali dell'utente. Questa funzionalità richiede topSites, che include un avviso.
Sviluppare funzionalità che si basano sulle autorizzazioni con avvisi facoltativi e introdurre questi avvisi in modo organico offre agli utenti un'introduzione all'estensione senza rischi. Inoltre, questo consente agli utenti di personalizzare ulteriormente la propria esperienza con un'estensione e offre l'opportunità di spiega gli avvisi.
Sostituisci l'autorizzazione ActiveTab
L'autorizzazione activeTab
concede l'accesso temporaneo al sito in cui si trova l'utente e consente alla
per usare l'autorizzazione "tabs"
nella scheda corrente. Sostituisce la necessità
"<all_urls>"
in molti casi e non mostra alcun avviso al momento dell'installazione.
Senza scheda attiva:
Con la scheda attiva:
L'autorizzazione activeTab
concede a un'estensione l'accesso temporaneo alla scheda attualmente attiva quando
l'utente chiama l'estensione. Se l’estensione viene compromessa, l’aggressore deve attendere
per consentire all'utente di richiamare l'estensione prima di ottenere l'accesso, e questo accesso durerebbe solo fino al
la scheda viene visualizzata o chiusa.
Mentre l'autorizzazione activeTab
è attiva per una scheda, un'estensione può:
- Chiama
tabs.executeScript
otabs.insertCSS
in questa scheda. - Recupera l'URL, il titolo e la favicon di quella scheda tramite un'API che restituisce un oggetto
tabs.Tab
. - 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.
I seguenti gesti dell'utente consentono di attivare activeTab
:
- Esecuzione di un'azione nel browser
- Esecuzione di un'azione sulla pagina
- Esecuzione di una voce del menu contestuale
- Esecuzione di una scorciatoia da tastiera dall'API dei comandi
- Accettare un suggerimento dall'API omnibox
Autorizzazione dell'accesso
Se un'estensione deve accedere agli URL di file://
o operare in modalità di navigazione in incognito, gli utenti dovranno:
attiva l'accesso a queste funzionalità nella pagina dei dettagli dell'estensione all'indirizzo chrome://extensions.
Un'estensione può rilevare se è stata attivata in modalità di navigazione in incognito chiamando
extension.isAllowedIncognitoAccess()
o che possono essere pubblicati su file://
URL con
extension.isAllowedFileSchemeAccess()
Informazioni sulle autorizzazioni
Esistono avvisi di autorizzazione per descrivere le funzionalità concesse da un'API agli utenti dell'estensione, ma
alcuni di questi avvisi all'inizio potrebbero non essere evidenti. Ad esempio, l'aggiunta di "tabs"
comporta un avviso apparentemente non correlato: l'estensione può Leggere la tua navigazione
attività. L'API chrome.tabs
può essere utilizzata solo per aprire nuove schede, ma 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 l'allarme avvisi.
Visualizzazione degli avvisi
Se un'estensione viene caricata come file decompresso, non verrà visualizzato alcun avviso relativo alle autorizzazioni. Per visualizzare un
avvisi di autorizzazione dell'estensione, vai a chrome://extensions
e assicurati che la modalità sviluppatore sia attiva
e fai clic su COMPLETA ESTENSIONE.
Specifica il percorso della cartella dell'estensione nel campo Directory principale dell'estensione , quindi fai clic sul pulsante Pulsante Crea pacchetto estensione. Ignora il campo Chiave privata per un pacchetto per la prima volta.
Chrome creerà due file, un file .crx
e un file .pem
contenente il nome dell'estensione
chiave privata.
Non perdere la chiave privata. Conserva il file .pem
in un luogo segreto e sicuro. sarà
necessario per aggiornare l'estensione.
Installa il file .crx
trascinandolo nella pagina Gestione dell'estensione di Chrome.
Dopo aver eliminato il file .crx
, il browser chiederà se è possibile aggiungere l'estensione e visualizzarla
avvisi.
Autorizzazioni con avvisi
Nota:le tabelle delle autorizzazioni vengono aggiornate secondo il criterio del "best effort" e potrebbero contenere lievi discrepanze
con gli avvisi correnti. Inoltre, alcune autorizzazioni potrebbero non mostrare avvisi se abbinate a
e altre autorizzazioni. Ad esempio, l'avviso "tabs"
non viene visualizzato se anche l'estensione
richiede "<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 all'estensione l'accesso 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 all'estensione l'accesso a "https://HostName.com/" . È possibile evitare di dichiarare qualsiasi
autorizzazioni host usando l'autorizzazione activeTab. |
Leggere e modificare i dati su HostName.com |
"bookmarks" |
Concede alla tua 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 alla tua estensione l'accesso all'API chrome.contentSettings. | Modifica delle impostazioni che controllano i siti web accesso a funzioni quali cookie, JavaScript, plug-in, geolocalizzazione, microfono, fotocamera ecc. |
"debugger" |
Concede alla tua estensione l'accesso all'API chrome.debugger. |
|
"declarativeNetRequest" |
Concede alla tua estensione l'accesso all'API chrome.declarativeNetRequest. | Bloccare i contenuti delle pagine |
"desktopCapture" |
Concede alla tua estensione l'accesso all'API chrome.desktopCapture. | Acquisire i contenuti dello schermo |
"downloads" |
Concede alla tua 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 alla tua 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 Native Messaging. | Comunicare con applicazioni native che interagiscono tra loro |
"notifications" |
Concede alla tua estensione l'accesso all'API chrome.notifications. | Mostrare 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 espuldere 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
inclusi chrome.tabs e chrome.windows. Nella
in molte circostanze per cui l'estensione non dovrà dichiarare l'autorizzazione "tabs" per l'utilizzo
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ù spesso |
"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 disattivarla temporaneamente. L'utente dovrà riattivarla dopo aver accettato 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 la nuova autorizzazioni aggiuntive.
Per evitare questo problema, rendi facoltativa la nuova funzionalità e aggiungi nuovi aggiornamenti delle autorizzazioni alla
optional_permissions
nel manifest.