L’uso dei “biscottini” (Parte I) – Web Security

Negli scorsi articoli abbiamo iniziato ad addentrarci un passo per volta nel mondo della web security parlando del protocollo HTTP e della sua “versione sicura” HTTPS.
HTTP tuttavia è un protocollo stateless, ossia che non è in grado di memorizzare informazioni riguardo le varie richieste.
Ogni connessione viene chiusa dopo che la risposta è stata fornita, e pertanto due richieste anche consecutive sono completamente indipendenti. Questo chiaramente costituisce di per sè una grave inefficienza.
Per riparare a questa carenza, ancora nel lontano 1994, fu introdotto il concetto di cookie, letteralmente in italiano “biscottino”.

Il cookie, nella pratica, non è altro che un piccolo insieme di informazioni (qualche kilobyte) che viene salvato sul computer dell’utente, e che riguarda l’utente stesso. Insomma, consente di memorizzare a lato client lo stato di una sessione.
Esso viene trasmesso tramite gli Header HTTP delle Request e Response tra server e client, e viene creato tramite il campo set-cookie la prima volta che un utente si connette ad un server che ne richiede la presenza.
E’ solitamente composto da una coppia nome-valore e al momento del settaggio possono essere impostati attributi diversi quali il dominio di provenienza, il percorso, la scadenza, o alcuni flag (Secure e HTTPOnly) di cui parleremo più avanti. In alcuni casi, quando le informazioni da memorizzare sono molte, nel cookie è indicato soltanto l’indice di un database che poi risiede sul server.

Il sistema dei cookie fa in modo che ogni volta che il client si riconnette allo stesso server, inserendo nell’header dell’HTTP Request il cookie, permetterà di riutilizzare le informazioni memorizzate. Come anticipato, con l’attributo expires è  possibile determinare anche una scadenza.
Essi infatti si suddividono sostanzialmente tra cookie di sessione, che vengono eliminati alla chiusura del browser, e cookie persistenti, che invece possono rimanere anche per sempre nel disco rigido dell’utente. Sebbene siano passati quasi 20 anni dalla loro prima implementazione, essi hanno tutt’ora un ruolo centrale nella gestione delle informazioni in HTTP, e ricoprono molteplici funzioni quali la memorizzazione delle credenziali d’accesso, di informazioni sugli shopping cart nei siti di e-commerce oppure le preferenze di personalizzazione di pagine web.

Tuttavia fin da quando sono stati presentati i cookie hanno sempre suscitato grandi dibattiti e polemiche sul loro uso smodato, e sull’intrinseca  mancanza di sicurezza. Innanzitutto, uno dei grandi problemi che li riguarda è la presenza di “third-party cookie” cioè cookie di terze parti che non sono impostati dal sito visitato bensì da altri elementi della pagina web quali i banner pubblicitari, e hanno lo scopo di “spiare” l’utente raccogliendo informazioni sulle sue abitudini a fini economici. Questi cookie secondo lo stesso IETF, il team che si occupa dell’evoluzione di Internet, non dovrebbero essere permessi; infatti, nella maggior parte dei browser esiste l’opzione per disabilitarli.

Ma a parte queste questioni, più correlate a violazioni di privacy piuttosto che di security, i cookie sono stati spesso sfruttati per portare attacchi violando la sicurezza di HTTP.
Proprio a questo argomento sarà dedicato interamente il prossimo articolo.

Tags: , , ,

Non ci sono ancora commenti.

Lascia una risposta