Informazioni sui cookie

Un cookie è un blocco di dati memorizzato nel browser utilizzato per mantenere lo stato e altre informazioni necessarie a un sito web per eseguire le proprie funzionalità.

Un cookie è un piccolo file che i siti web memorizzano sul computer degli utenti e le informazioni memorizzate si spostano avanti e indietro tra il browser e il sito web.

Ogni cookie è una coppia chiave-valore insieme a una serie di attributi che controllano quando e dove viene utilizzato quel cookie. Questi attributi vengono utilizzati per impostare, ad esempio, le date di scadenza o per indicare che i cookie devono essere inviati solo tramite HTTPS. Puoi impostare un cookie in un'intestazione HTTP o tramite l'interfaccia JavaScript.

I cookie sono uno dei metodi disponibili per aggiungere uno stato persistente ai siti web. Nel corso degli anni le loro capacità sono cresciute ed evolute, ma hanno lasciato la piattaforma con alcuni problemi legacy. Per risolvere questo problema, i browser (inclusi Chrome, Firefox ed Edge) stanno modificando il loro comportamento per applicare impostazioni predefinite più incentrate sulla tutela della privacy.

Cookie in azione

Supponiamo che tu abbia un blog in cui vuoi mostrare una promozione "Novità" ai tuoi utenti. Gli utenti possono ignorare la promozione, dopodiché non la vedranno più per un po' di tempo. Puoi memorizzare questa preferenza in un cookie, impostarla in modo che scada dopo un mese (2.600.000 secondi) e inviarla solo tramite HTTPS. L'intestazione sarebbe simile alla seguente:

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
Tre cookie inviati a un browser da un server in una risposta
I server impostano i cookie utilizzando l'intestazione Set-Cookie.

Quando il lettore visualizza una pagina che soddisfa questi requisiti (utilizza una connessione sicura e il cookie risale a meno di un mese fa), il browser invia questa intestazione nella richiesta:

Cookie: promo_shown=1
Tre cookie inviati da un browser a un server in una richiesta
Il browser restituisce i cookie nell'intestazione Cookie.

Puoi anche aggiungere e leggere i cookie disponibili per il sito in JavaScript utilizzando document.cookie. Se assegni un'assegnazione a document.cookie, verrà creato o eseguito l'override di un cookie con quella chiave. Ad esempio, puoi provare quanto segue nella console JavaScript del browser:

→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"

La lettura di document.cookie restituirà tutti i cookie accessibili nel contesto corrente, con ogni cookie separato da un punto e virgola:

→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
JavaScript che accede ai cookie nel browser
JavaScript può accedere ai cookie utilizzando document.cookie.

Se provi a eseguire questa operazione su una selezione di siti popolari, noterai che la maggior parte di questi imposta molto più di tre cookie. Nella maggior parte dei casi, questi cookie vengono inviati a ogni singola richiesta al dominio, il che ha una serie di implicazioni. Per gli utenti, la larghezza di banda per il caricamento è spesso più limitata rispetto a quella per il download, quindi l'overhead per tutte le richieste in uscita comporta un ritardo nel tempo necessario per arrivare al primo byte. Presta attenzione al numero e alle dimensioni dei cookie che imposti. Utilizza l'attributo Max-Age per assicurarti che i cookie non restino più a lungo del necessario.

Che cosa sono i cookie proprietari e di terze parti?

Se torni alla stessa selezione di siti che stavi cercando in precedenza, probabilmente ti avrai notato che erano presenti cookie per diversi domini, non solo per quello che stavi visitando. I cookie che corrispondono al dominio del sito corrente, ovvero ciò che viene visualizzato nella barra degli indirizzi del browser, sono indicati come cookie proprietari. Analogamente, i cookie di domini diversi dal sito corrente vengono denominati cookie di terze parti. Non si tratta di un'etichetta assoluta, ma è relativa al contesto dell'utente; lo stesso cookie può essere proprietario o di terze parti, a seconda del sito in cui si trova l'utente in quel momento.

Tre cookie inviati a un browser da richieste diverse sulla stessa pagina
I cookie possono provenire da diversi domini su una sola pagina.

Proseguendo con l'esempio riportato sopra, supponiamo che uno dei tuoi post del blog contenga l'immagine di un gatto particolarmente incredibile ed è ospitata su /blog/img/amazing-cat.png. Poiché l'immagine è meravigliosa, un'altra persona la usa direttamente sul suo sito. Se un visitatore ha visitato il tuo blog e dispone del cookie promo_shown, quando visualizza amazing-cat.png sul sito dell'altra persona, quel cookie verrà inviato nella richiesta per l'immagine dell'altra persona. Ciò non è particolarmente utile per nessuno poiché promo_shown non viene utilizzato per scopi sul sito di quest'altra persona, si tratta solo di aggiungere overhead alla richiesta.

Se si tratta di un effetto imprevisto, perché dovresti farlo? È questo meccanismo che consente ai siti di mantenere lo stato quando vengono utilizzati in un contesto di terze parti. Ad esempio, se incorpori un video di YouTube nel tuo sito, i visitatori vedranno l'opzione "Guarda più tardi" nel player. Se il visitatore ha già effettuato l'accesso a YouTube, la sessione viene resa disponibile nel player incorporato da un cookie di terze parti, il che significa che il pulsante "Guarda più tardi" salverà il video in una sola volta anziché chiedergli di eseguire l'accesso o di uscire dalla pagina e tornare su YouTube.

Lo stesso cookie viene inviato in tre contesti diversi
Un cookie in un contesto di terze parti viene inviato quando si visitano pagine diverse.

Una delle proprietà culturali del web è che tende a essere aperto per impostazione predefinita. Questo fa parte di ciò che ha permesso a così tante persone di creare i propri contenuti e le proprie app. Tuttavia, questo ha sollevato anche una serie di problemi di sicurezza e privacy. Gli attacchi di richiesta di falsificazione tra siti (CSRF) si basano sul fatto che i cookie sono associati a qualsiasi richiesta inviata a una determinata origine, indipendentemente da chi avvii la richiesta. Ad esempio, se visiti evil.example, questo può attivare richieste a your-blog.example e il tuo browser collegherà felicemente i cookie associati. Se il tuo blog non valuta attentamente le modalità di convalida delle richieste, evil.example potrebbe attivare azioni come l'eliminazione di post o l'aggiunta di contenuti propri.

Gli utenti sono inoltre più consapevoli di come i cookie possono essere utilizzati per monitorare la loro attività su più siti. Tuttavia, finora non c'è stato un modo per Dichiarare esplicitamente l'intenzione con il cookie. Il cookie promo_shown deve essere inviato solo in un contesto proprietario, mentre il cookie di sessione per un widget da incorporare in altri siti è intenzionalmente presente per fornire lo stato di accesso in un contesto di terze parti.

Puoi dichiarare esplicitamente la tua intenzione con un cookie impostando l'attributo SameSite appropriato.

Per identificare i cookie proprietari e impostare gli attributi appropriati, consulta le ricette di biscotti proprietari.