Attributi dei cookie

Quando un server web risponde a una richiesta di una risorsa, può includere un'intestazione Set-Cookie insieme alla risposta. Questa intestazione indica al browser di memorizzare un cookie. Ad esempio: Set-Cookie:cat=tabby. Che cosa sono i cookie? spiega come funzionano i cookie.

Oltre a fornire un nome e un valore del cookie, Set-Cookie può includere attributi per controllare se i cookie vengono impostati e quando scadono. Gli attributi dei cookie sono separati da punti e virgola. Ad esempio:

    Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;

Questo documento spiega gli attributi dei cookie più importanti:

Utilizzo dei cookie HTTP spiega gli attributi dei cookie in modo più tecnico.

Sicuro

Se un'intestazione Set-Cookie include Secure, il cookie verrà incluso solo nelle richieste criptate che utilizzano il protocollo HTTPS: il cookie non verrà incluso nelle richieste HTTP. Ciò può contribuire a bloccare attacchi intermediari, in cui un malintenzionato interviene segretamente nelle comunicazioni tra il browser e il server per trasmettere informazioni e potenzialmente alterarle.

HTTPOnly

Se un'intestazione Set-Cookie include HTTPOnly, JavaScript non può accedere al cookie, ad esempio utilizzando document.cookie. In questo modo, è possibile proteggersi da determinati tipi di attacchi che prendono di mira i cookie.

SameSite

Una richiesta di una risorsa da un sito diverso da quello che stai visitando è una richiesta cross-site. Un cookie impostato in risposta a una richiesta cross-site è un cookie di terze parti.

L'attributo SameSite controlla se un cookie di terze parti verrà incluso in una richiesta. Ha tre valori possibili: Strict, Lax o None.

Scopri di più: Che cosa sono i cookie di terze parti?

Strict

Il cookie verrà inviato solo in risposta alle richieste di una pagina che si trova sul sito di origine del cookie. Ad esempio, immagina che un utente visiti cats.example e che un cookie sia impostato con l'attributo SameSite=Strict. Successivamente, l'utente si trova su un altro sito e segue un link a una pagina su cats.example. Il cookie impostato non verrà incluso nella richiesta.

Lax

Funziona allo stesso modo di Strict, tranne per il fatto che il browser includerà anche il cookie quando l'utente segue un link al sito di origine del cookie. Nell'esempio precedente Strict, il cookie sarebbe incluso quando l'utente segue il link a cats.example. Lax è l'impostazione predefinita se nell'intestazione Set-Cookie non è incluso alcun attributo SameSite.

Nessuno

Nessun vincolo: il cookie verrà incluso in una richiesta, indipendentemente dal fatto che sia cross-site o meno. Con SameSite=None, il cookie deve avere anche l'attributo Secure.

Partizionata

Questo attributo ti consente di attivare un cookie per l'archiviazione partizionata, con un "contenitore di cookie" separato per ogni sito di primo livello. Il cookie è a doppia chiave, dal sito di primo livello e dal dominio che lo imposta.

Ad esempio, supponiamo che il sito web A e il sito web B includano entrambi un iframe del sito web C. Un cookie partizionato impostato dall'iframe sul sito web A non può essere accessibile dall'iframe sul sito web B: il cookie AC è separato dal cookie BC.

Diagramma che mostra che due diversi siti web che incorporano una terza parte comune non condivideranno più i cookie per quella terza parte.
Con il partizionamento dei cookie, un servizio di terze parti che imposta un cookie quando è incorporato in un sito di primo livello non può accedere allo stesso cookie quando il servizio è incorporato in altri siti di primo livello.

I cookie con un attributo Partitioned sono noti come CHIPS: Cookies Having Independent Partitioned State.

I cookie con stato partizionato devono avere l'attributo Secure.

Scopri di più: Cookies Having Independent Partitioned State.

Expires e Max-Age

Puoi specificare una data e un'ora Expires o un Max-Age in secondi dopo i quali un cookie deve essere eliminato e non più inviato. Ad esempio:

  • Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
  • Set-Cookie:cat=tabby; Max-Age=86400

Se non specifichi un attributo Max-Age o Expires, un cookie verrà eliminato al termine della sessione corrente. Questo tipo di cookie è a volte chiamato cookie di sessione.

Dominio

Se un'intestazione Set-Cookie ha un attributo Domain, il cookie verrà incluso nelle richieste al dominio specificato e a uno qualsiasi dei suoi sottodomini.

Se un'intestazione Set-Cookie non ha un attributo Domain, il cookie non verrà incluso nelle richieste ai sottodomini.

In altre parole, l'inclusione dell'attributo Domain riduce le limitazioni del dominio.

Ad esempio, con una risposta dal sito web cats.example:

  • Set-Cookie:cat=tabby
    Il cookie verrà incluso solo nelle richieste a cats.example
  • Set-Cookie:cat=tabby; Domain=cats.example
    Il cookie verrà incluso nelle richieste a cats.example, nonché in qualsiasi richiesta di risorse su sottodomini come fluffy.cats.example o user.assets.cats.example

Percorso

Se un attributo Path è incluso in un'intestazione di risposta Set-Cookie, il cookie impostato verrà incluso solo nelle richieste agli URL (sul sito che ha impostato il cookie) che corrispondono al valore Path.

Ad esempio:

  • Set-Cookie:cat=tabby; Path=/articles
    Il cookie verrà incluso in una richiesta a qualsiasi percorso URL che inizia con /articles:
    https://cats.example/articles/tabby/index.html
    https://cats.example/articles/breeds/tabby/index.html
    https://cats.example/images/tabby.jpg
    https://cats.example/en/articles/tabby/index.html
  • Set-Cookie:cat=tabby; Path=/
    Tutte le richieste a qualsiasi URL del sito includeranno il cookie.

Se un'intestazione della risposta Set-Cookie non ha un valore Path, il cookie verrà incluso solo nelle richieste alla stessa directory. Ad esempio, immagina che un cookie cat=tabby venga impostato in risposta a una richiesta di cats.example/images/tabby.jpg. Se non viene impostato alcun Path, il cookie verrà incluso solo nelle richieste di file all'interno della directory cats.example/images.

Demo

Strumenti

Scopri di più