Magic cookie
# Magic cookie

Un magic cookie, o semplicemente cookie, è un token digitale, ovvero un breve pacchetto di dati scambiato tra programmi in comunicazione fra loro, dai contenuti solitamente opachi, ovvero non significativi per il programma destinatario. Il dato è infatti tipicamente interpretato solo quando, in un secondo momento, il destinatario restituisce il cookie al mittente originario o ad un altro programma. Molto spesso il cookie è usato in maniera simile a un ticket, cioè un magic number generato da un server per un client e in grado di identificare quest'ultimo in maniera univoca. Il ticket, essendo difficilmente falsificabile, può essere utilizzato come prova di autenticazione o di autorizzazione.

## Introduzione

Per analogia con la vita reale, un magic cookie è molto simile al gettone, che si riceve nei guardaroba, ad esempio quando, entrando in un teatro o un museo, si lascia in custodia un soprabito. Sebbene il gettone non abbia alcun significato intrinseco, la sua unicità permette al possessore di riavere lo stesso cappotto e lo stesso ombrello che aveva depositato, pur essendo totalmente all'oscuro (opacità dei dati) di come il personale custodisca e reperisca tali oggetti. Un'altra simile analogia è possibile con quei dischi di metallo che nel XX secolo autorizzavano il possessore ad una telefonata di qualche scatto: i gettoni telefonici.

## Diffusione

Il sistema di autenticazione di X Window System utilizza un magic cookie, tipicamente memorizzato nel file .Xauthority di un utente, per identificare e autorizzare tale utente su quella macchina.

Il protocollo HTTP, usato tipicamente per trasferire risorse web quali ipertesti o contenuti multimediali, è stato esteso rispetto alle formulazioni originali aggiungendo meccanismi di gestione di cookie per realizzare una comunicazione che potesse mantenere informazioni di stato. I cookie di HTTP sono spesso usati dai server web non solo per identificare un client, solitamente il browser, e per realizzare quei meccanismi di autenticazione dell'utente relativi alla procedura di login, ma talvolta anche per memorizzare vere e proprie informazioni, come una coppia chiave-valore.

