La soluzione per evitare la fissazione della sessione è semplice cambiare l'ID della sessione.
bool session_regenerate_id([bool $delOldSession = false])
sostituirà l'ID di sessione corrente con uno nuovo e manterrà le informazioni sulla sessione corrente. Aggiunta del parametro true
: session_regenerate_id(true)
cancella la vecchia esssion. Se non elimini le sessioni precedenti, la tua applicazione web è vulnerabile al dirottamento di sessione. Lasciate sessioni vecchie, ma ancora valide all'interno della directory / tmp. Questo significa:
- sui server di hosting web condivisi alcune persone potrebbero ancora accedervi
- hai più possibilità di indovinare qualsiasi ID di sessione valido
Devi sempre distruggere le vecchie sessioni con session_regenerate_id(true)
o session_destroy()
.
Tuttavia, dovresti essere consapevole del rendimento di session_regenerate_id(true)
. Il minimo indispensabile è di usarlo, quando cambi i privilegi dell'utente (come login, logout). Quando lo usi troppo spesso, noterai cose "strane" con le tue sessioni. PHP ha restrizioni nell'accesso alla sessione per una sola attività in esecuzione. Più richieste entrano in coda. Se invii richieste a digiunare, allora: