Spazio di archiviazione e cookie

Le estensioni possono memorizzare cookie e accedere alle API di archiviazione web in modo simile a un normale sito web. Tuttavia, in alcuni casi, le estensioni si comportano in modo diverso.

Per informazioni sull'API dell'estensione, vedi chrome.storage.

Archiviazione

Spesso è preferibile utilizzare API di archiviazione delle piattaforme web nelle estensioni. Questa sezione esplora il comportamento di queste API nel contesto di un'estensione, che a volte può differire da come si comportano sul web.

Persistenza

Lo spazio di archiviazione delle estensioni non viene cancellato quando un utente cancella i dati di navigazione. Questo vale per tutti i dati archiviati utilizzando le API di archiviazione web (ad esempio Archiviazione locale e IndexedDB).

Per impostazione predefinita, le estensioni sono soggette alle normali limitazioni della quota di spazio di archiviazione, che possono essere controllate chiamando il numero navigator.storage.estimate(). Lo spazio di archiviazione può anche essere rimosso in presenza di un'elevata pressione di memoria, anche se questo è raro. Per evitare che ciò accada:

  • Richiedi l'autorizzazione "unlimitedStorage", che influisce sulle API di estensione e di archiviazione web ed esenti le estensioni sia dalle limitazioni della quota sia dall'eliminazione.
  • Chiama il numero navigator.storage.persist() per ricevere protezione contro lo sfratto.

Lo spazio di archiviazione delle estensioni è condiviso nell'origine dell'estensione, inclusi il service worker, qualsiasi pagina dell'estensione (inclusi popup e riquadro laterale) e documenti fuori schermo. Negli script dei contenuti, la chiamata delle API di archiviazione web consente di accedere ai dati dalla pagina host in cui è stato inserito lo script dei contenuti e non dall'estensione.

Accesso nei service worker

Le API IndexedDB e Cache Storage sono accessibili nei service worker. Al contrario, Archiviazione locale e Archiviazione sessione non lo sono.

Se devi accedere all'archiviazione locale o all'archiviazione della sessione dal service worker, utilizza un documento fuori schermo.

Partizionamento

Il partizionamento è il luogo in cui vengono introdotte le chiavi per i dati archiviati al fine di limitare i punti in cui è possibile accedervi. Storicamente, lo spazio di archiviazione è basato sull'origine.

A partire da Chrome 115, il partizionamento dello spazio di archiviazione introduce modifiche al modo in cui vengono definite le chiavi di partizionamento per impedire determinati tipi di monitoraggio tra siti. In pratica, questo significa che se il sito A incorpora un iframe contenente il sito B, quest'ultimo non sarà in grado di accedere allo stesso spazio di archiviazione che avrebbe solitamente se viene visitato direttamente.

Per mitigare l'impatto di questa modifica nelle estensioni, si applicano due esenzioni:

  • Se una pagina con lo schema chrome-extension:// è incorporata in un sito, il partizionamento dello spazio di archiviazione non verrà applicato e l'estensione avrà accesso alla sua partizione di primo livello.
  • Se una pagina con lo schema chrome-extension:// include un iframe e l'estensione dispone delle autorizzazioni host per il sito che sta incorporando, anche il sito avrà accesso alla sua partizione di primo livello.

Biscotti

I cookie consentono di archiviare coppie chiave-valore associate a un dominio e a un percorso specifici. Hanno un valore limitato nelle estensioni, ma comprendere il loro comportamento può essere utile se hai un caso d'uso specifico o hai integrato uno script di terze parti che le utilizza nella sua implementazione.

Protezione dei cookie

L'attributo cookie Secure è supportato solo per lo schema https://. Di conseguenza, le pagine chrome-extension:// non sono in grado di impostare cookie con questo attributo.

Ciò significa anche che le pagine delle estensioni non possono utilizzare altri attributi dei cookie per i quali l'attributo Secure è obbligatorio:

Partizionamento e comportamento dello stesso sito

I cookie impostati nelle pagine chrome-extension:// usano sempre SameSite=Lax. Di conseguenza, i cookie impostati da un'estensione sulla propria origine non sono mai accessibili nei frame e il partizionamento non è pertinente.

Per i cookie associati a siti di terze parti, ad esempio per un sito di terze parti caricato in un frame nella pagina di un'estensione o una richiesta effettuata da una pagina di estensione a un'origine di terze parti, i cookie si comportano come il web, tranne in due modi:

  • I cookie di terze parti non vengono mai bloccati anche nei frame secondari se la pagina di primo livello di una determinata scheda è una pagina chrome-extension://.
  • Le richieste da un'estensione a una terza parte vengono trattate come "stesso sito" se l'estensione dispone delle autorizzazioni per l'host per la terza parte. Ciò significa che i cookie SameSite=Strict possono essere inviati. Tieni presente che questo si applica solo alle richieste di rete, non all'accesso tramite document.cookie in JavaScript e non si applica se i cookie di terze parti sono bloccati.

Tieni presente che le impostazioni relative ai cookie di terze parti dipendono dal funzionamento di Privacy Sandbox e vengono regolate in base alla relativa sequenza temporale.

L'API chrome.cookies fornisce il controllo sulla chiave di partizione da utilizzare con ciascun metodo API. Per ulteriori informazioni, consulta la documentazione di riferimento API.