I
cookie rappresentano un sistema che può essere utilizzato
da connessioni lato server per memorizzare e/o recuperare informazioni sul lato
client della connessione, ed attraverso questo tipo di meccanismo riuscire a
mantenere delle informazioni sul client in modo persistente e quindi condividere
uno stato attraverso più pagine o script.
Le possibili applicazioni realizzabili mediante l’utilizzo dei cookie
sono diverse; un esempio viene fornito dai siti su cui si ha la possibilità
di personalizzare la pagina visualizzata e di scegliere alcuni parametri preferenziali,
come i colori ed il tipo dei contenuti che più interessano. In tal modo,
quando il client accede nuovamente a quella pagina, il server sa già
quali informazioni fornirgli.
Un’altra applicazione tipica è quella di memorizzare determinate
informazioni per evitare al navigatore di doverle immettere più di una
volta; ad esempio, chi usa servizi di webmail spesso ha la possibilità,
selezionando un’apposita opzione, di fare in modo, al momento di accedere
alla propria casella di posta, di essere “riconosciuto” e di dover
inserire solo la password.
Un ulteriore esempio è quello dei “carrelli”, componente
irrinunciabile dei siti di commercio elettronico.
Dal punto di vista del sito che lo invia, un cookie è utile perché permette al sito stesso di essere più efficiente: esso sa quali sono le informazioni rilevanti per i propri utenti, può scartare le pagine che non vengono utilizzate e concentrare gli sforzi sulle informazioni che il client desidera.
I cookie non sono altro che dei file di testo, di dimensioni ridotte (1k circa), il cui scopo è quello di informare il server riguardo gli accessi a determinate pagine web e a particolari informazioni riguardanti il navigatore. Inoltre, non possono essere in alcun modo dannosi, in particolare non riempiono il disco con file qualunque, non danneggiano il computer, non introducono virus e non raccolgono informazioni private sugli utenti.
Un
cookie è costituito da una coppia NAME/VALUE che si può
considerare come una variabile e da una data di scadenza, EXPIRES,
oltre la quale si autoelimina (al momento della creazione non viene indicata,
compare alla chiusura del browser).
La scadenza è facoltativa e consiste di un timestamp
(quindi un numero intero); se non viene indicata, il cookie verrà automaticamente
eliminato alla chiusura del browser.
Ad ogni cookie sono associati anche un DOMAIN (dominio) ed un PATH
(percorso). Il dominio consente di individuare quali cookie sono accessibili
per un determinato sito (per default, viene impostato al nome del dominio corrente);
può essere comodo, tuttavia, utilizzare un valore diverso. Ad esempio,
se consideriamo il sito www.site.com, con il valore predefinito di
dominio i cookie impostati non risulteranno validi per un eventuale shop.site.com;
usando, invece, “.site.com” i cookie saranno validi per
tutti i domini che ricadono sotto site.com.
Il persorso ha anch’esso funzione di individuazione del campo di validità
del cookie e, precisamente, serve a specificare il sottoinsieme di indirizzi
URL in un dominio nei quali il cookie è valido (per default è
impostato al path corrente).
Infine, ogni cookie ha un attributo SECURE che, se impostato, lo contrassegna
come riservato, per cui esso potrà essere trasmesso solo attraverso connessioni
sicure, in particolare connessioni HTTPS (per default tale attributo non è
impostato, cioè non viene richiesta alcuna connessione sicura).
In generale, la struttura di un cookie è la seguente:
<COOKIE
NAME = ”cookie_name”
VALUE = ”text”
EXPIRES = ”period”
SECURE = ”Yes/No”
PATH = ”urls”
DOMAIN = ”.domain.com”>
Il funzionamento è molto semplice e intuitivo: ad una richiesta HTTP, il server, tramite un header Set-Cookie nella risposta, può richiedere al client di memorizzare un cookie; il client associa il cookie al server dal quale lo ha ricevuto e lo rispedisce tramite un header Cookie nella richiesta.