Informazioni sui cookie

Un cookie è un blocco di dati memorizzato nel browser che viene utilizzato per mantenere lo stato e altre informazioni di cui un sito web ha bisogno per eseguire le proprie funzionalità.

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

Ogni cookie è una coppia chiave-valore con una serie di attributi che controllano quando e dove viene utilizzato il cookie. Questi attributi vengono utilizzati per impostare, ad esempio, le 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 stati permanenti ai siti web. Nel corso degli anni le loro capacità sono cresciute e si sono evolute, ma hanno lasciato la piattaforma con alcuni problemi legacy. Per risolvere questo problema, i browser (tra cui Chrome, Firefox ed Edge) stanno cambiando il proprio comportamento per applicare impostazioni predefinite incentrate sulla tutela della privacy.

Cookie in azione

Supponiamo che tu abbia un blog in cui vuoi mostrare la sezione "Novità" promozione per il tuo utenti. Gli utenti possono ignorare la promozione e non la vedranno più per un po'. Puoi memorizzare la preferenza in un cookie e impostarlo in modo che scada dopo un mese (2.600.000 secondi) e lo invii solo tramite HTTPS. L'intestazione dovrebbe avere questo aspetto questo:

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
Tre cookie inviati a un browser da un server in 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 risale a meno di un mese fa (il browser invierà questa intestazione nella sua 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 compito a document.cookie, verrà creato o di eseguire l'override di un cookie con quella chiave. Ad esempio, puoi provare a procedere nel seguente modo 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 produrrà tutti i cookie accessibili nell'attuale contesto, in cui 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 questo approccio su una selezione di siti popolari, noterai che la maggior parte dei impostano molto più di tre cookie. Nella maggior parte dei casi, i cookie vengono inviati per ogni singola richiesta a quel dominio, che ha una serie di implicazioni. La larghezza di banda per il caricamento è spesso più limitata rispetto al download per il tuo utenti, in modo che l'overhead di tutte le richieste in uscita aggiunga un ritardo al tempo al primo byte. Utilizza un approccio prudente per quanto riguarda il numero e le dimensioni dei cookie che imposti. Marca utilizzo dell'attributo Max-Age per garantire 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 consultando in precedenza, probabilmente avrà notato la presenza di cookie per diversi domini, non solo quello che stavi visitando. I cookie che corrispondono al dominio sito corrente, ovvero ciò che è visualizzato nella barra degli indirizzi del browser, come cookie proprietari. Analogamente, i cookie provenienti da domini diversi da del sito corrente sono chiamati cookie di terze parti. Non è un valore assoluto ma è relativo al contesto dell'utente; lo stesso cookie può essere proprietari o di terze parti in base al sito su cui si trova in quel momento l'utente.

Tre cookie inviati a un browser da richieste diverse nella stessa pagina
In una pagina, i cookie possono provenire da diversi domini diversi.

Continuando con l'esempio precedente, supponiamo che uno dei tuoi post del blog abbia un di un gatto particolarmente incredibile ed è ospitata presso /blog/img/amazing-cat.png. Siccome è un'immagine così incredibile, un'altra persona lo utilizza direttamente sul proprio sito. Se un visitatore ha visitato il tuo blog e ha promo_shown, poi quando visualizza amazing-cat.png sull'altro sito dell'utente in cui il cookie verrà inviato nella richiesta dell'immagine. Questo non è particolarmente utile per nessuno poiché promo_shown non viene utilizzato per scopi specifici sul sito dell'altra persona, sta solo aggiungendo un overhead alla richiesta.

Se si tratta di un effetto involontario, 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 sul tuo sito: i visitatori vedranno un link "Guarda più tardi" nel player. Se il visitatore è hai già effettuato l'accesso a YouTube, la sessione è stata resa disponibile player incorporato tramite cookie di terze parti, vale a dire che "Guarda più tardi" pulsante salvare il video in una volta, invece di chiedergli di eseguire l'accesso o di doverlo per spostarli dalla tua pagina e tornare su YouTube.

Lo stesso cookie inviato in tre diversi contesti
Quando visiti pagine diverse, viene inviato un cookie in un contesto di terze parti.

Una delle proprietà culturali del web è che tendenzialmente è aperto predefinito. Fa parte di ciò che ha permesso a così tante persone di creare i propri contenuti e le proprie app. Tuttavia, ciò ha comportato anche un certo numero di problemi di sicurezza e privacy. Gli attacchi Cross-site Request Forgery (CSRF) si basano il fatto che i cookie siano collegati a qualsiasi richiesta a una determinata origine, indipendentemente che avvia la richiesta. Ad esempio, se visiti evil.example, puoi attiverà richieste a your-blog.example e il tuo browser si collegherà i cookie associati. Se il tuo blog non fa attenzione a come convalida le richieste, quindi evil.example potrebbe attivare azioni come l'eliminazione di post o l'aggiunta i propri contenuti.

Gli utenti sono anche sempre più consapevoli di come i cookie possono essere utilizzati per monitorare i loro attività su più siti. Tuttavia, fino ad ora non c'è stato un modo esplicitamente l'intento con il cookie. Il cookie di promo_shown dovrebbe essere inviato solo in un contesto proprietario, mentre un cookie di sessione per un widget integrati in altri siti serve intenzionalmente per fornire di accesso in un contesto di terze parti.

Puoi dichiarare esplicitamente il tuo intento con un cookie impostando l'attributo SameSite appropriato.

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