Sicurezza - I cookies

Cosa sono questi strani "dolci" che un sito web vi ha sicuramente già proposto. La maggior parte delle volte, quando un server web propone un cookie, gli utenti ignorano il termine e cliccano su «OK» senza molte preoccupazioni. Un cookie è in realtà un file immagazzinato sul disco rigido dell'utente, che permette al server web di riconoscerlo da una pagina all'altra. I cookie sono soprattutto usati dai siti di commercio elettronico per conservare le preferenze dell'utente (ad esempio le opzioni che ha selezionato) per evitargli di doverle ridigitare.

Il problema più grande dei cookie è di rivelare le informazioni che esso contiene. In effetti, quando un utente si connette ad un sito personalizzabile, questo gli pone delle domande per stilare il suo profilo per poi stoccare questi dati in un cookie. A seconda del sito, il modo in cui l'informazione è stoccata può essere nociva all'utente. In effetti, un sito di vendita in linea può ad esempio raccogliere delle informazioni sulle preferenze degli utenti attraverso un questionario, per proporgli ulteriormente degli articoli che possono interessarlo.

Ad esempio, sapendo se l'utente è un uomo o una donna, un sito potrà indirizzarlo direttamente al settore appropriato per fargli risparmiare del tempo (e soprattutto per vendere meglio). Se invece l'utente ha indicato nel suo profilo che è un amante del tennis, il sito sarà in grado di proporgli una selezione personalizzata degli ultimi articoli del settore. Un cookie è quindi un meccanismo previsto per creare un'associazione tra la sessione dell'utente (navigazione tra le pagine di uno stesso sito durante un periodo dato) e i dati che lo riguardano.

Idealmente, il cookie deve contenere una stringa aleatoria (identificativa della sessione) unica e difficilmente indovinabile, valida unicamente durante un intervallo di tempo dato. Solo il server deve poter essere capace di associare le preferenze degli utenti a questo identificativo. Quindi, dopo la scadenza del cookie, l'identificativo della sessione sarà inutile e il cookie non conterrà nessuna informazione riguardo l'utente. In nessun caso il cookie contenere direttamente le informazioni riguardanti l'utente e la sua durata di vita deve essere più simile possibile a quella corrispondente alla sessione dell'utente.

D'altra parte, i dati stoccati in un cookie sono inviati dal server, sulla base dei dati indicati dall'utente (ad eccezione dell'indirizzo IP e dell'identificazione del navigatore trasmesso automaticamente al server). Così, il cookie non può in nessun caso contenere delle informazioni sull'utente che egli non ha fornito o delle informazioni sul contenuto del computer, o in altri termini: il cookie non può raccogliere delle informazioni sul sistema dell'utente. Quindi, rifiutate di dare delle informazioni personali ad un sito che non vi ispira fiducia dato che vi è nessuna ragione affinché raccolga delle informazioni che vi riguardano. Un cookie non ha dunque niente di pericoloso in se stesso se è ben concepito e se l'utente non fornisce informazioni personali.

I cookie fanno parte delle specifiche del protocollo HTTP, cioè il protocollo che permette di navigare sulle pagine internet. Il protocollo HTTP permette di scambiare dei messaggi tra il server e il client attraverso delle richieste e delle risposte HTTP. Le richieste e le risposte HTTP contengono delle intestazioni che permettono di inviare delle informazioni particolari in modo reciproco. Una di queste intestazioni è riservata alla scrittura dei file sul disco rigido: i cookie.

L'intestazione HTTP riservata all'utilizzo dei cookie viene detta Set-Cookie, si tratta di una semplice linea di testo dalla forma:

Set-Cookie: NOME=VALORE; domain=NOME_DEL_DOMINIO; expires=DATA

. Si tratta quindi di una stringa di caratteri che comincia con «Set-Cookie:» e prosegue da coppie chiave-valore, sotto forme CHIAVE=VALORE, separate da virgole. Qui sotto una tabella delle principali chiavi (dette attributi) possibili per un cookie:

Attributo Valore Sintassi Descrizione
NOME_DEL_COOKIE VALORE Il nome e il valore non possono contenere i caratteri punto e virgola (;), virgola (,) e spazio (). Per mettere dei valori simili bisogna ricorrere alla <a href="/contents/internet/url.php3">codificazione URL<a/> Questo attributo è obbligatorio (fra l'altro è il solo)
expires DATA Giorno, DD-Mese-YYYY HH:MM:SS GMT L'attributo expires permette di definire la data in cui il cookie non deve più essere stoccato sul disco, e non deve più essere preso in considerazione dal server
dominio nome_del_dominio xxx.xxx.xxx Il nome del dominio è generalmente lasciato vuoto visto che il nome del server è assegnato per default (cosa che solitamente si desidera). Quando è indicato, il nome del dominio deve contenere almeno due punti (www . ccm . net). Un terminale che proviene da un dominio specifico non può specificare che un solo nome di sub-dominio o il proprio nome di dominio
path /cartella /percorso/ L'attributo <i>path</ital> (tradotto percorso) permette di definire una sotto cartella o un file del server sul quale il cookie è valido, per ridurre il suo campo di azione
secure nessuno L'attributo secure è opzionale. Permette di specificare che il cookie sarà inviato unicamente se la connessione è sicurezzata (via SSL o S-HTTP

Nota Bene: un cookie non può oltrepassare i 4 KB, un client non può avere più di 300 cookie sul proprio disco, un server può creare al massimo 20 cookie su un client.

Quando un client si connette ad un sito (quindi al server), i cookie per il dominio e il percorso specifico sono automaticamente inviati nelle intestazioni della HTTP. L'intestazione si presenta allora come:

Cookie : NOME1=VALORE1; NOME2=VALORE2; ecc.

Uno script CGI (o altri come ASP o PHP) possono quindi verificare la presenza del cookie:

Analizzando le intestazioni nel caso del CGI;

Utilizzando l'oggetto Request nel caso dello script ASP;

Utilizzando le variabili $NOME1, $NOME2 (ecc.), create automaticamente dal motore dello script PHP.

I cookie sono sottomessi ad un certo numero di obblighi:

Il loro numero totale è limitato a 300;

La dimensione massima di un cookie è di 4 KB;

Possono esistere al massimo 20 cookie per dominio.

Un cookie non è visibile fino al successivo caricamento della pagina;

Bisogna sapere che alcuni browser non trattano bene i cookie:

Microsoft Internet Explorer 4 con il Service Pack 1 non tratta correttamente i cookie che hanno il parametro percorso definito;

Al contrario Netscape Communicator 4.05 e Microsoft Internet Explorer 3.x non trattano correttamente i cookie che non hanno i parametri percorso e scadenza definiti.

Foto: © Martial Red – Shutterstock.com

I nostri contenuti sono creati in collaborazione con esperti di high-tech, sotto la direzione di Jean-François Pillou, fondatore di CCM.net. CCM è un sito di high-tech leader a livello internazionale ed è disponibile in 11 lingue.
Il documento intitolato « Sicurezza - I cookies » dal sito CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.