Il cookie SameSite è un attributo di sicurezza che può essere impostato su un cookie HTTP al momento della sua creazione. Esso indica al browser in quali contesti il cookie deve essere inviato insieme alle richieste verso un determinato sito. L’obiettivo principale è limitare l’invio automatico dei cookie nelle richieste cross-site, riducendo così il rischio di attacchi informatici come il cross-site request forgery.

Introdotto inizialmente come estensione sperimentale e poi standardizzato nei documenti dell’Internet Engineering Task Force, SameSite è diventato un elemento centrale delle politiche di privacy e sicurezza dei browser moderni. I principali browser hanno progressivamente modificato il comportamento predefinito dei cookie privi di questo attributo, trattandoli come se fossero impostati su un valore restrittivo. Comprendere SameSite è quindi essenziale per chi sviluppa applicazioni web e per chi si occupa di ottimizzazione per i motori di ricerca.

Che cosa significa SameSite

Il termine SameSite si riferisce alla relazione tra il sito che ha emesso il cookie e il sito verso cui viene effettuata la richiesta. Quando i due coincidono, la richiesta è considerata same-site; quando differiscono, la richiesta è definita cross-site. L’attributo SameSite consente di specificare se e come il cookie debba essere incluso in queste due categorie di richieste.

La distinzione non riguarda solo il dominio principale, ma anche i sottodomini e gli schemi di protocollo. Un cookie impostato su un sito può essere inviato a un sottodominio dello stesso sito a seconda del valore di SameSite. Questa granularità permette di bilanciare funzionalità e sicurezza in base alle esigenze dell’applicazione.

Differenza tra same-site e cross-site

Una richiesta è same-site quando il sito di origine e quello di destinazione condividono lo stesso dominio registrabile, indipendentemente dal sottodominio. È cross-site quando i domini registrabili sono diversi. Questa definizione influenza direttamente il modo in cui i browser gestiscono l’invio dei cookie.

I valori dell’attributo SameSite

L’attributo SameSite accetta tre valori principali: Strict, Lax e None. Ciascuno definisce un diverso livello di restrizione per l’invio del cookie nelle richieste cross-site. La scelta del valore dipende dal tipo di funzionalità che il cookie deve supportare.

SameSite=Strict

Con il valore Strict, il cookie viene inviato esclusivamente nelle richieste same-site. Qualsiasi richiesta proveniente da un sito diverso non include il cookie, nemmeno se l’utente sta navigando verso il sito di destinazione. Questo garantisce la massima protezione ma può compromettere esperienze come il mantenimento della sessione dopo un accesso da un link esterno.

SameSite=Lax

Il valore Lax rappresenta un compromesso. Il cookie viene inviato nelle richieste cross-site di tipo navigazione, ovvero quando l’utente segue un collegamento verso il sito, ma non nelle richieste effettuate in background come quelle di tipo POST o tramite risorse incorporate. È il valore predefinito adottato da diversi browser per i cookie che non specificano l’attributo.

SameSite=None

Il valore None disattiva la restrizione, consentendo al cookie di essere inviato anche nelle richieste cross-site. Per motivi di sicurezza, i browser richiedono che un cookie con SameSite=None sia anche contrassegnato come Secure, ovvero trasmissibile solo su connessioni cifrate. Questo valore è necessario per cookie utilizzati in contesti di terze parti, come widget incorporati o sistemi di pagamento esterni.

Tabella comparativa dei valori SameSite

ValoreInvio same-siteInvio cross-siteUso tipico
StrictSempreMaiCookie di sessione con elevata sicurezza
LaxSempreSolo navigazione top-levelCookie di sessione per siti generici
NoneSempreSempre, con SecureCookie di terze parti e widget
Non specificatoSecondo browserSecondo browserComportamento variabile
Lax con SecureSempreSolo navigazione top-levelSiti con HTTPS obbligatorio

Impatto sulla sicurezza e sulla privacy

L’introduzione di SameSite ha ridotto in modo significativo la superficie di attacco per il cross-site request forgery. Impedendo l’invio automatico dei cookie nelle richieste cross-site, un sito malevolo non può facilmente indurre il browser dell’utente a eseguire azioni autenticate su un altro sito. Questo ha reso più robuste molte applicazioni web che si basavano unicamente su altri meccanismi di difesa.

Sul fronte della privacy, SameSite limita il tracciamento cross-site effettuato tramite cookie di terze parti. Tuttavia, il valore None consente ancora questo tipo di tracciamento quando esplicitamente autorizzato. Le normative sulla protezione dei dati e le politiche dei browser hanno reso più complesso l’uso dei cookie di terze parti, spingendo gli sviluppatori verso alternative come le API di storage lato client e i sistemi di misurazione basati su server.

Relazione con il tracciamento di terze parti

I cookie di terze parti utilizzati per pubblicità e analisi richiedono spesso SameSite=None per funzionare correttamente. Poiché i browser stanno progressivamente bloccando questi cookie, il loro ruolo nel tracciamento è in diminuzione. Le tecniche di attribuzione e misurazione si stanno quindi orientando verso approcci che non dipendono dai cookie cross-site.

Come configurare SameSite

La configurazione di SameSite avviene tramite l’intestazione HTTP Set-Cookie, aggiungendo l’attributo appropriato. La sintassi prevede il nome dell’attributo seguito dal valore, separato da un punto e virgola rispetto agli altri attributi del cookie. È possibile combinare SameSite con altri attributi come Secure e HttpOnly per rafforzare la sicurezza.

  1. Identificare i cookie utilizzati dall’applicazione e il loro scopo.
  2. Determinare se il cookie deve funzionare in contesti cross-site.
  3. Scegliere il valore SameSite più adatto: Strict, Lax o None.
  4. Se si sceglie None, assicurarsi che il cookie sia anche Secure.
  5. Verificare che il sito utilizzi una connessione HTTPS per i cookie Secure.
  6. Testare il comportamento del cookie nelle diverse situazioni di navigazione.
  7. Monitorare eventuali errori o avvisi mostrati dai browser in fase di sviluppo.
  8. Aggiornare la documentazione interna sull’uso dei cookie.

Domande frequenti su Cookie SameSite

Che cosa succede se non specifico l’attributo SameSite?

Il comportamento dipende dal browser. Molti browser moderni trattano i cookie privi di SameSite come se fossero impostati su Lax, applicando quindi restrizioni nelle richieste cross-site. È consigliabile specificare sempre il valore desiderato per evitare comportamenti imprevisti.

SameSite=None è sicuro?

SameSite=None di per sé non è insicuro, ma richiede l’attributo Secure per essere accettato dai browser. Questo significa che il cookie viaggia solo su connessioni cifrate. Rimane comunque esposto a rischi cross-site, quindi va usato solo quando strettamente necessario.

SameSite influisce sulla SEO?

SameSite non influisce direttamente sul posizionamento nei motori di ricerca. Tuttavia, una configurazione errata può causare problemi di sessione, errori di accesso o malfunzionamenti che indirettamente peggiorano l’esperienza utente e quindi le prestazioni del sito.

Posso usare SameSite con cookie di sessione?

Sì, SameSite è compatibile con i cookie di sessione. Per la maggior parte dei siti, il valore Lax rappresenta un buon equilibrio tra sicurezza e funzionalità. Per applicazioni che richiedono protezione elevata, si può valutare Strict.

Quali browser supportano SameSite?

I browser moderni più diffusi supportano l’attributo SameSite, anche se con differenze nel comportamento predefinito. Le versioni più recenti hanno introdotto restrizioni aggiuntive per i cookie di terze parti, rendendo il supporto sempre più rigoroso.

SameSite è obbligatorio?

Non è obbligatorio in senso assoluto, ma i browser applicano comportamenti predefiniti restrittivi quando l’attributo manca. Specificarlo esplicitamente è considerata una buona pratica per garantire coerenza e prevedibilità.