Spiegazione dei cookie SameSite

Supporto dei browser

  • Chrome: 51.
  • Edge: 16.
  • Firefox: 60.
  • Safari: 13.

Origine

Ogni cookie contiene una coppia chiave-valore con una serie di attributi che controllare quando e dove viene utilizzato il cookie.

Introduzione dell'attributo SameSite (definito in RFC6265bis) ti consente di dichiarare se il tuo cookie è limitato ai cookie proprietari o contesto stesso-sito. È utile capire esattamente cosa "sito" significa in questo caso. Il sito è la combinazione del suffisso di dominio e della parte del dominio prima. Ad esempio, il dominio www.web.dev fa parte del sito web.dev.

Termine chiave: se l'utente si trova su www.web.dev e richiede un'immagine da static.web.dev, è una richiesta stesso sito.

L'elenco di suffissi pubblici definisce quali pagine vengono conteggiate come sullo stesso sito. Non dipende solo da domini di primo livello come .com, ma può includere anche servizi come github.io. Ciò consente your-project.github.io e my-project.github.io vengono conteggiati come siti separati.

Termine chiave: se l'utente si trova su your-project.github.io e richiede un'immagine da my-project.github.io è una richiesta cross-site.

Utilizza l'attributo SameSite per dichiarare l'utilizzo dei cookie

L'attributo SameSite in un cookie offre tre modi diversi per controllare questo comportamento. Puoi scegliere di non specificare l'attributo oppure puoi utilizzare Strict o Lax per limitare il cookie alle richieste dallo stesso sito.

Se imposti SameSite su Strict, il cookie può essere inviato solo in un contesto proprietario; ovvero se il sito del cookie corrisponde a quello mostrato nella barra degli indirizzi del browser. Pertanto, se il cookie promo_shown è impostato come segue:

Set-Cookie: promo_shown=1; SameSite=Strict

Quando l'utente si trova sul tuo sito, il cookie viene inviato con la richiesta come previsto. Tuttavia, se l'utente segue un link che rimanda al tuo sito da un altro, il cookie non viene inviato nella richiesta iniziale. Questa opzione è utile per i cookie relativi a caratteristiche sempre precedute da una come cambiare la password o effettuare un acquisto, ma è altrettanto importante restrittivo per un cookie come promo_shown. Se il lettore segue il link al sito, l'utente vuole che venga inviato il cookie in modo da poter applicare la sua preferenza.

SameSite=Lax consente al browser di inviare il cookie con questi server di primo livello navigazioni. Ad esempio, se un altro sito fa riferimento ai contenuti del tuo sito, in questo caso utilizzando la foto del tuo gatto e fornendo un link al tuo articolo come che segue:

<p>Look at this amazing cat!</p>
<img src="https://blog.example/blog/img/amazing-cat.png" />
<p>Read the <a href="https://blog.example/blog/cat.html">article</a>.</p>

Con un cookie impostato su Lax come segue:

Set-Cookie: promo_shown=1; SameSite=Lax

Quando il browser richiede amazing-cat.png per il blog dell'altra persona, la tua il sito non invia il cookie. Tuttavia, quando il lettore segue inserisci un link a cat.html sul tuo sito, la richiesta non include il cookie.

Ti consigliamo di utilizzare SameSite in questo modo, impostando i cookie che influiscono sul sito web la visualizzazione a Lax e i cookie relativi alle azioni dell'utente per Strict.

Puoi anche impostare SameSite su None per indicare che vuoi che il cookie sia inviati in tutti i contesti. Se fornisci un servizio utilizzato da altri siti, ad esempio widget, contenuti incorporati, programmi di affiliazione, pubblicità o accesso più siti, utilizza None per verificare che l'intento sia chiaro.

Tre cookie con etichetta Nessuno, Lax o Rigoroso a seconda del contesto
. Contrassegna in modo esplicito il contesto di un cookie come None, Lax o Strict.

Modifiche al comportamento predefinito senza SameSite

Supporto dei browser

  • Chrome: 80.
  • Edge: 86.
  • Firefox: dietro una bandiera.
  • Safari: non supportato.

L'attributo SameSite è ampiamente supportato, ma non è stato adottato su larga scala. In passato, l'impostazione predefinita dei cookie senza SameSite ne comportava l'invio in tutti i contesti, il che espone gli utenti vulnerabili agli attacchi CSRF e la fuga di informazioni. Incoraggiare gli sviluppatori a esprimere il loro intento e per offrire agli utenti un'esperienza più sicura, la proposta IETF, Cookie migliori in modo incrementale presenta due modifiche chiave:

  • I cookie senza un attributo SameSite vengono trattati come SameSite=Lax.
  • I cookie con SameSite=None devono anche specificare Secure, il che significa che richiedono un contesto sicuro.

Entrambe queste modifiche sono compatibili con le versioni precedenti con i browser che hanno ha implementato la versione precedente dell'attributo SameSite, nonché browser che non supportano versioni precedenti di SameSite. Il loro scopo è quello di ridurre il numero di sviluppatori fare affidamento sui browser comportamento predefinito impostando i cookie il comportamento e l'uso previsto espliciti. I clienti che non riconoscono SameSite=None dovrebbe ignorarlo.

SameSite=Lax per impostazione predefinita

Se invii un cookie senza specificare il relativo attributo SameSite, il browser tratta quel cookie come se fosse impostato su SameSite=Lax. Consigliamo comunque impostando esplicitamente SameSite=Lax per rendere l'esperienza utente più coerente tra i browser.

SameSite=None deve essere sicuro

Quando crei cookie cross-site utilizzando SameSite=None, devi impostarli anche a Secure per consentire al browser di accettarli:

Set-Cookie: widget_session=abc123; SameSite=None; Secure

Puoi testare questo comportamento a partire da Chrome 76 attivando about://flags/#cookies-without-same-site-must-be-secure e da Firefox 69 impostando network.cookie.sameSite.noneRequiresSecure in about:config

Ti consigliamo inoltre di aggiornare il prima possibile i cookie esistenti in Secure. Se ti affidi a servizi che forniscono contenuti di terze parti sul tuo sito, assicurati il provider di servizi aggiorna i cookie e aggiorna eventuali snippet dipendenze sul tuo sito per assicurarti che utilizzi il nuovo comportamento.

Per ulteriori dettagli su come aggiornare i cookie per gestire correttamente questi modifiche a SameSite=None e le differenze nel comportamento del browser, consulta le l'articolo di follow-up sulle ricette di biscotti SameSite.

Grazie per i contributi e il feedback di Lily Chen, Malte Ubl, Mike West, Rob Dodson, Tom Steiner e Vivek Sekhar.

Immagine hero cookie di Parco di Pile-Riin attivo Rimuovi schermo