Proteggi la privacy degli utenti

Gli utenti non installano un'estensione se questa compromette la loro privacy o se richiede le autorizzazioni necessarie. Le richieste di autorizzazione devono avere senso per gli utenti ed essere limitate alle informazioni fondamentali necessarie per implementare l'estensione. Le estensioni che raccolgono o trasmettono dati utente devono essere conformi alle norme della sezione Protezione della privacy degli utenti.

Proteggi e rispetta gli utenti delle estensioni adottando queste precauzioni per mantenere al sicuro la loro identità.

Riduci le autorizzazioni richieste

Le API alle quali può accedere un'estensione sono specificate nel campo permissions del manifest. Più autorizzazioni vengono concesse, più possibilità ha un malintenzionato di intercettare le informazioni. Devono essere elencate solo le API da cui dipende un'estensione e occorre tenere conto delle opzioni meno invasive. Minore è il numero di autorizzazioni richieste da un'estensione, meno gli avvisi di autorizzazione verranno mostrati a un utente. Gli utenti sono più propensi a installare un'estensione con avvisi limitati.

Le estensioni non devono essere a prova di futuro per l'accesso ai dati utente richiedendo autorizzazioni di cui al momento non hanno bisogno, ma che potrebbero essere implementate in futuro. Includi nuove autorizzazioni con gli aggiornamenti delle estensioni e considera di renderle facoltative.

activeTab

Le estensioni che utilizzano le autorizzazioni dell'host per inserire script spesso possono sostituire activeTab. L'autorizzazione activeTab concederà a un'estensione l'accesso temporaneo alla scheda attualmente attiva solo quando l'utente richiama l'estensione. L'accesso viene interrotto quando l'utente esce dalla scheda corrente o la chiude. Serve come alternativa per molti usi di <all_urls>.

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

L'autorizzazione activeTab non mostra messaggi di avviso durante l'installazione.

Attiva autorizzazioni facoltative

Consenti agli utenti di scegliere le funzionalità e le autorizzazioni di cui hanno bisogno da un'estensione includendo autorizzazioni facoltative. Se una funzionalità non è essenziale per la funzionalità di base di un'estensione, rendila facoltativa e sposta l'API o il dominio nel campo optional_permissions.

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

L'inclusione di autorizzazioni facoltative consente a un'estensione di spiegare perché è necessaria un'autorizzazione specifica quando l'utente attiva la funzionalità pertinente. L'estensione può offrire all'utente la possibilità di abilitare le funzionalità.

Screenshot di un popup che richiede di attivare le autorizzazioni

Se fai clic su OK. nel Service worker viene attivato il seguente evento.

chrome.action.onClicked.addListener((event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request(
    {
      permissions: ["tabs", "scripting"],
      origins: ['https://www.google.com/']
    },
    function (granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        // doSomething();
      } else {
        // doSomethingElse();
      }
    }
  );
});

All'utente verrà quindi presentata la seguente richiesta.

Screenshot della richiesta di autorizzazione facoltativa.

Le autorizzazioni facoltative possono essere implementate anche nell'aggiornamento di un'estensione. In questo modo la nuova funzionalità sarà disponibile per gli utenti senza disattivare l'estensione, come può accadere in caso di aggiornamento con le nuove autorizzazioni richieste.

Limitare e proteggere le informazioni degli utenti

Richiedi solo la quantità minima di dati necessaria a un'estensione. Meno informazioni che un'estensione chiede a un utente significa meno esposizione se l'estensione viene compromessa.

Tutti i dati utente richiesti devono essere trattati con cura. Archivia e recupera i dati in un server sicuro con un dominio registrato. Utilizza sempre HTTPS per connetterti ed evitare di conservare dati utente sensibili sul lato client di un'estensione poiché lo spazio di archiviazione delle estensioni non è criptato.

Salvataggio dei dati e modalità di navigazione in incognito

Le estensioni possono salvare i dati utilizzando l'API storage o effettuando richieste al server che comportano il salvataggio dei dati. Quando l'estensione deve salvare qualcosa, valuta innanzitutto se proviene da una finestra di navigazione in incognito. Per impostazione predefinita, le estensioni non vengono eseguite nelle finestre di navigazione in incognito.

La modalità di navigazione in incognito promette che la finestra non lascia tracce. Quando gestiscono i dati delle finestre di navigazione in incognito, le estensioni devono rispettare questa promessa. Se normalmente un'estensione salva la cronologia di navigazione, non salvarla dalle finestre di navigazione in incognito. Tuttavia, le estensioni possono memorizzare le preferenze di impostazione da qualsiasi finestra, in incognito o meno.

Per rilevare se una finestra è in modalità di navigazione in incognito, controlla la proprietà incognito dell'oggetto tabs.Tab o windows.Window pertinente.

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}