Page 190 - Corso di PHP - Livello base
P. 190
già la incrementiamo. Terminato il blocco if stampiamo la
nostra variabile.
Salvate il file chiamandolo, per esempio, “fixation.php” e
inseritelo in una cartella “prova” all'interno della cartella
“www” di Wamp. A questo punto aprite il vostro browser
preferito (per esempio Firefox), eliminate tutti i cookie di
localhost e collegatevi a questo indirizzo:
http://localhost/prova/fixation.php?PHPSESSID=12345.
Aggiornate la pagina un qualsiasi numero di volte, arriviamo
per esempio a 9.
A questo punto chiudete pure il browser. Riaprite un altro
browser (esempio, Chrome), magari anche su un altro computer
se fate la prova su un server remoto, e provate a collegarvi allo
stesso indirizzo: come potrete notare il conto non ripartirà da 0
ma partirà da dove siete rimasti prima (nel nostro caso vedremo
“10”). Cosa significa questo? Abbiamo simulato un ipotetico
utente A che utilizza Firefox, apre la pagina con il link che gli è
stato suggerito dal malintenzionato utente B e dà inizio a una
sessione. L'utente B aprirà poi il suo Chrome con l'id di
sessione da lui stesso creato e potrà accedere ai dati
dell'utente A. In questo caso si tratta semplicemente del
numero di volte che ha aggiornato la pagina, ma questo tipo di
attacco funziona tranquillamente anche su script molto più
complessi (per esempio un login a un sito web: il
malintenzionato B potrà accedere indisturbato a tutti i dati
personali dell'utente A) che però hanno seri problemi di
sicurezza.
Come difendersi da questo attacco? Il metodo più semplice è
rigenerare spesso l'id di sessione, in modo da rendere
inefficaci gli attacchi: questo si può fare agevolmente tramite
l'apposita funzione session_regenerate_id, che si applica in
modo molto semplice:
190