Informazioni sui cookie

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

Un cookie è un piccolo file che i siti web memorizzano sul computer dei propri utenti. Le informazioni che memorizza vengono trasferite 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. Questi attributi vengono utilizzati per impostare elementi quali date di scadenza o per indicare che il cookie deve essere inviato 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 funzionalità sono cresciute ed evolute, ma hanno lasciato la piattaforma con alcuni problemi legacy problematici. Per risolvere questo problema, i browser (inclusi Chrome, Firefox ed Edge) stanno modificando il loro comportamento per applicare impostazioni predefinite che tutelano la privacy.

I cookie in azione

Supponiamo che tu abbia un blog in cui vuoi mostrare una promozione "Novità" ai tuoi utenti. Gli utenti possono chiudere la promozione e non la vedranno più per un po'. Puoi memorizzare questa preferenza in un cookie, impostarne la scadenza dopo un mese (2.600.000 secondi) e inviarlo solo tramite HTTPS. L'intestazione sarà simile a questa:

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 (si trova su una connessione sicura e il cookie ha meno di un mese), il browser invierà questa intestazione nella richiesta:

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

Puoi anche aggiungere e leggere i cookie disponibili per quel sito in JavaScript utilizzando document.cookie. L'assegnazione a document.cookie creerà o sovrascriverà un cookie con quella chiave. Ad esempio, puoi provare a digitare 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 all'interno del browser
JavaScript può accedere ai cookie utilizzando document.cookie.

Se provi questa operazione su una selezione di siti popolari, noterai che la maggior parte di loro imposta molti più di tre cookie. Nella maggior parte dei casi, questi cookie vengono inviati a ogni singola richiesta a quel dominio, il che ha una serie di implicazioni. La larghezza di banda di caricamento è spesso più limitata rispetto a quella di download per i tuoi utenti, pertanto l'overhead su tutte le richieste in uscita aggiunge un ritardo al tempo al primo byte. Sii prudente nel numero e nelle dimensioni dei cookie che imposti. Utilizza l'attributo Max-Age per assicurarti che i cookie non rimangano più a lungo del necessario.

Che cosa sono i cookie proprietari e di terze parti?

Se torni alla stessa selezione di siti che stavi guardando prima, probabilmente avrai notato che erano presenti cookie per una serie di domini, non solo per quello che stavi visitando. I cookie che corrispondono al dominio del sito corrente, ovvero a ciò che viene visualizzato nella barra degli indirizzi del browser, sono chiamati cookie proprietari. Analogamente, i cookie provenienti da domini diversi dal sito corrente vengono chiamati 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 su 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 una serie di domini diversi su una pagina.

Continuando con l'esempio precedente, supponiamo che uno dei tuoi post del blog contenga la foto di un gatto particolarmente straordinario e che sia ospitata all'indirizzo /blog/img/amazing-cat.png. Poiché è un'immagine così straordinaria, un'altra persona la utilizza direttamente sul proprio sito. Se un visitatore ha visitato il tuo blog e ha il cookie promo_shown, quando visualizza amazing-cat.png sul sito dell'altra persona, il cookie verrà inviato nella richiesta dell'immagine. Questa non è particolarmente utile per nessuno, poiché promo_shown non viene utilizzato per nulla sul sito di quest'altra persona, ma aggiunge solo un sovraccarico alla richiesta.

Se si tratta di un effetto indesiderato, perché vorresti 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 sul tuo sito, i visitatori vedranno un'opzione "Guarda più tardi" nel player. Se il visitatore ha già eseguito l'accesso a YouTube, la sessione viene resa disponibile nel video player incorporato da un cookie di terze parti, il che significa che il pulsante "Guarda più tardi" salverà il video in un'unica operazione anziché richiedere l'accesso o dover allontanare l'utente dalla tua pagina e reindirizzarlo a YouTube.

Lo stesso cookie 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 è uno dei motivi per cui così tante persone hanno potuto creare i propri contenuti e le proprie app. Tuttavia, ciò ha anche sollevato una serie di preoccupazioni in materia di sicurezza e privacy. Gli attacchi di richiesta cross-site forgery (CSRF) si basano sul fatto che i cookie vengono allegati a qualsiasi richiesta a una determinata origine, indipendentemente da chi avvia la richiesta. Ad esempio, se visiti evil.example, possono essere attivate richieste a your-blog.example e il browser allegherà i cookie associati. Se il tuo blog non presta attenzione alla convalida di queste richieste, evil.example potrebbe attivare azioni come l'eliminazione di post o l'aggiunta di contenuti propri.

Gli utenti stanno anche diventando più consapevoli di come i cookie possono essere utilizzati per monitorare la loro attività su più siti. Tuttavia, finora non è stato possibile dichiarare esplicitamente la tua intenzione con il cookie. Il cookie promo_shown deve essere inviato solo in un contesto proprietario, mentre un cookie di sessione per un widget destinato a essere incorporato 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 tuoi cookie proprietari e impostare gli attributi appropriati, consulta Ricette per i cookie proprietari.