Prepararsi per le nuove impostazioni dei cookie SameSite=None; Secure

Giovedì 16 gennaio 2020

Questo è un cross post del blog per sviluppatori di Chromium e descrive in che modo le modifiche a Chrome potrebbero influire sul funzionamento del vostro sito web per gli utenti in futuro.

A maggio, Chrome ha annunciato un modello sicuro per impostazione predefinita per i cookie, attivato da un nuovo sistema di classificazione dei cookie (specifica). Questa iniziativa fa parte del nostro impegno continuo per migliorare la privacy e la sicurezza in tutto il Web.

Chrome prevede di implementare il nuovo modello con Chrome 80 a febbraio 2020; anche Mozilla e Microsoft hanno manifestato l'intenzione di implementare il nuovo modello in Firefox ed Edge, secondo le proprie tempistiche. Sebbene manchino ancora dei mesi per le modifiche di Chrome, è importante che gli sviluppatori che gestiscono i cookie siano ben preparati. Questo post del blog definisce i concetti generali; per istruzioni per gli sviluppatori, consultate la pagina SameSite Cookie Explained su web.dev.

I siti web in genere integrano servizi esterni per funzionalità quali pubblicità, consigli sui contenuti, widget di terze parti, incorporamenti social e altre ancora. Quando navigate sul Web, questi servizi esterni potrebbero memorizzare cookie nel vostro browser e accedervi in seguito per fornire esperienze personalizzate o misurare il coinvolgimento del pubblico. Ogni cookie è associato a un dominio; se il dominio associato a un cookie corrisponde a un servizio esterno e non al sito web nella barra degli indirizzi dell'utente, il contesto viene considerato cross-site (o "di terze parti").

Casi d'uso meno evidenti del contesto cross-site includono situazioni in cui un'entità che possiede più siti web utilizza un cookie in quelle proprietà. Anche se la stessa entità è proprietaria sia del cookie che dei siti web, tale contesto viene comunque considerato come contesto cross-site o di "terze parti" quando il dominio del cookie non corrisponde ai siti da cui si accede al cookie.

Il dominio del sito non corrisponde al dominio del cookie

Quando una risorsa esterna su una pagina web accede a un cookie che non corrisponde al dominio del sito, il contesto viene definito cross-site o di "terze parti".

Al contrario, l'accesso ai cookie in un contesto same-site (o "proprietario") si verifica quando il dominio del cookie corrisponde al dominio del sito web nella barra degli indirizzi dell'utente. I cookie same-site vengono comunemente utilizzati per mantenere attivo l'accesso delle persone ai singoli siti web, ricordare le loro preferenze e supportare l'analisi dei siti.

Il dominio del sito corrisponde al dominio del cookie.

Quando una risorsa su una pagina web accede a un cookie che corrisponde al sito visitato dall'utente, il contesto viene definito same-site o "proprietario".

Attualmente, se un cookie è destinato all'accesso solo in un contesto proprietario, lo sviluppatore ha la possibilità di applicare una delle due impostazioni (SameSite=Lax o SameSite=Strict) per impedire l'accesso esterno. Tuttavia, sono davvero pochi gli sviluppatori che seguono questa pratica consigliata, lasciando un numero elevato di cookie same-site esposti inutilmente a minacce quali le richieste intersito false.

Al fine di proteggere più siti web e i loro utenti, il nuovo modello sicuro per impostazione predefinita presuppone che tutti i cookie debbano essere protetti dall'accesso esterno, se non diversamente specificato. Gli sviluppatori devono utilizzare una nuova impostazione dei cookie, SameSite=None, per contrassegnare i cookie per l'accesso cross-site; quando è presente l'attributo SameSite=None, è necessario utilizzare un attributo Secure aggiuntivo in modo che i cookie cross-site siano accessibili solo tramite connessioni HTTPS. Tale pratica non riduce tutti i rischi associati all'accesso cross-site, ma fornisce una protezione contro gli attacchi di rete.

Oltre ai vantaggi immediati per la sicurezza, la dichiarazione esplicita di cookie cross-site consente maggiore trasparenza e possibilità di scelta per l'utente. Ad esempio, i browser potrebbero offrire agli utenti controlli granulari per gestire i cookie accessibili da un singolo sito separatamente dai cookie accessibili da più siti.

Applicazione forzata di Chrome a partire da febbraio 2020

Con Chrome 80 a febbraio, il browser considererà i cookie senza valore SameSite dichiarato come cookie SameSite=Lax. Solo i cookie con l'impostazione SameSite=None; Secure saranno disponibili per l'accesso esterno, a condizione che sia possibile accedervi da connessioni sicure. I tracker di Chrome Platform Status per SameSite=None e Secure continueranno a essere aggiornati con le informazioni sul lancio più recenti.

Mozilla ha confermato il supporto del nuovo modello di classificazione dei cookie manifestando l'intenzione di implementare i requisiti di SameSite=None; Secure per i cookie cross-site in Firefox. Microsoft ha annunciato di recente di voler iniziare a implementare il modello come esperimento su Microsoft Edge 80.

Come prepararsi e complessità note

Se gestite cookie cross-site, dovrete applicare l'impostazione SameSite=None; Secure a tali cookie; l'implementazione dovrebbe essere semplice per la maggior parte degli sviluppatori, ma consigliamo vivamente di iniziare a testarla subito per identificare le complessità e i casi particolari, come i seguenti:

  • Non tutte le lingue e le librerie supportano ancora il valore None, pertanto gli sviluppatori devono impostare direttamente l'intestazione dei cookie. Questo repository di GitHub fornisce istruzioni per l'implementazione di SameSite=None; Secure in vari linguaggi, librerie e framework.
  • Alcuni browser, incluse alcune versioni di Chrome, Safari e UC Browser potrebbero gestire il valore None in modi indesiderati, richiedendo agli sviluppatori di codificare eccezioni per questi client; ciò include WebView di Android basati su versioni precedenti di Chrome. Ecco un elenco di client incompatibili noti.
  • Consigliamo agli sviluppatori di app di dichiarare le impostazioni SameSite cookie appropriate per Android WebViews in base alle versioni di Chrome compatibili con il valore None, sia per i cookie accessibili tramite le intestazioni HTTP(S) che tramite l'API CookieManager di WebView, anche se il nuovo modello verrà applicato su Android WebView in un secondo momento.
  • Gli amministratori IT aziendali potrebbero dover implementare criteri speciali per ripristinare temporaneamente il browser Chrome a un comportamento precedente se alcuni servizi come il Single Sign-On o le applicazioni interne non sono pronti per il lancio di febbraio.
  • Se disponete di cookie a cui accedete sia in un contesto proprietario che di terze parti, potreste utilizzare cookie separati per usufruire dei vantaggi di sicurezza di SameSite=Lax nel contesto proprietario.

L'articolo SameSite Cookies Explained offre indicazioni specifiche per le situazioni precedenti nonché canali per sollevare problemi e interrogativi.

Per testare l'effetto del nuovo comportamento di Chrome sul vostro sito o sui cookie che gestite, potete andare su chrome://flags in Chrome 76 e versioni successive e attivare gli esperimenti "SameSite by default cookies" e "Cookies without SameSite must be secure". Inoltre, questi esperimenti verranno attivati automaticamente per un sottoinsieme di utenti di Chrome 79 beta. Alcuni utenti beta che hanno abilitato gli esperimenti potrebbero riscontrare problemi di incompatibilità con i servizi che non supportano ancora il nuovo modello; è possibile disattivare gli esperimenti andando su chrome://flags.

Se gestite cookie accessibili solo in un contesto same-site, non è necessario alcun intervento da parte vostra; Chrome impedirà automaticamente l'accesso a tali cookie da parte di entità esterne, anche se l'attributo SameSite non è presente o non è stato impostato un valore. Tuttavia, consigliamo vivamente di applicare un valore SameSite (Lax o Strict) appropriato e di non fare affidamento sul comportamento predefinito del browser, dato che non tutti i browser proteggono i cookie same-site per impostazione predefinita.

Infine, se siete preoccupati relativamente all'idoneità di fornitori e di altre persone che forniscono servizi al vostro sito web, potete verificare la presenza di avvisi della console degli Strumenti per sviluppatori in Chrome 77 e versioni successive quando una pagina contiene cookie cross-site in cui mancano le impostazioni richieste:

Un cookie associato a una risorsa cross-site su (dominio del cookie) è stato impostato senza l'attributo "SameSite"

Alcuni fornitori (tra cui alcuni servizi Google) implementeranno le modifiche necessarie nei mesi che precedono il lancio di Chrome 80 a febbraio; vi consigliamo di contattare i vostri partner per verificarne l'idoneità.