Page 188 - Corso di PHP - Livello base
P. 188
28. La sicurezza in PHP: Session hijacking
Terminiamo con questo capitolo la breve panoramica sui più
comuni problemi di sicurezza con alcuni cenni sul session
hijacking, che consiste nel “furto dell'identità” di un utente
che si collega a un sito web.
Che cosa fa il malintenzionato che sottopone l'utente di un sito a
session hijacking? Non fa altro che rubare l'identificativo di
sessione dell'utente (ogni sessione ha un proprio id) per poi
loggarsi al sito spacciandosi per l'utente a cui ha rubato le
credenziali. Uno dei metodi più comuni per rubare le credenziali
è sfruttare il cross-site scripting: abbiamo però già parlato nel
capitolo precedente di come difenderci da questo tipo di
attacchi, quindi vedremo come coprirci anche da un furto
ottenuto tramite “session fixation”: con la session fixation, i
dati verranno rubati tramite una sessione creata ad hoc dal
malintenzionato.
Certo, affinché si verifichi una session fixation devono essere
soddisfatte due condizioni: codice vulnerabile e utente
sprovveduto. Nell capitolo sulle sessioni non abbiamo parlato
del modo in cui l'id di sessione viene propagato: ciò può
avvenire tramite un cookie che viene appositamente creato per
contenere l'id (cookie che si estinguerà alla chiusura del
browser) oppure, nel caso in cui i cookie siano stati disabilitati,
tramite metodi get e post. Il ladro di sessioni può convincere
l'utente del nostro sito (magari tramite una mail o con un post su
un blog) a collegarsi a un indirizzo simile a questo:
www.nostrosito.it/login.php?PHPSESSID=12345 dove,
attraverso la query string e ipotizzando che l'id di sessione
venga propagato tramite get, decide il numero di sessione.
Per comprendere meglio il meccanismo di un attacco session
188