Quote Originariamente inviata da ReAlpha Visualizza il messaggio
Perfetto! Ce l'ho fatta!
Ve lo dico come ho fatto il token..
$token = security_crypt($time.$security_hash.$time.$id.$pas sword);
$security_hash è un hash md5, risultato da più codificazioni ("frase" -> md5 -> md5 -> sha1 -> base64 -> base64 -> base64 -> sha1 -> md5) (si, son matto ), e non verrà mai cambiato, tranne tre volte all'anno nella speciale manutenzione nella quale verranno anche distrutte tutte le sessioni.
security_crypt() è una semplice funzioncina che uso per codificare password e hash passando il valore in entrata più volte (come $security_hash).

Grazie mille per le delucidazioni e l'aiuto! :-)
Ottimo.



Però non ti conviene tenere le sessioni così lunghe secondo me... si devono autodistruggere e cambiare, anche per questione di sicurezza e performance, tantopiù che non ti servono.

Io preferisco generare/memorizzare un token random molto complesso direttamente in database (questo per evitare ogni riferimento a username e password) ed utilizzare questo per il cookie.

In ogni pagina poi controllo in ordine:

1) se esiste una sessione valida (con più criteri, ad esempio l'ip e l'user agent)
2) se esiste un cookie che permette l'autologin (e se valido, cambio il token in db e sul cookie)
3) se ci ci sono troppi tentativi errati blocco l'ip per 1 ora
4) faccio i redirect al login oppure al contenuto della pagina