Sono uno sviluppatore web PHP che ha letto recentemente sulla sicurezza e di conseguenza mi è venuta in mente questa domanda: come autenticare in modo corretto e sicuro gli utenti già registrati con un token? Ho visto la tecnica menzionata in diversi punti, ma non ne ho trovato una dimostrazione.
Ne ho implementato personalmente una versione che funziona così:
- L'utente accede utilizzando il nome utente e la password. (Memorizzato usando un hash pbkdf2 a 1024 bit)
- Viene generato un token casuale seguito da MD5 utilizzando il seguente codice PHP:
uniqid(mt_rand(), true)
- Queste informazioni sono memorizzate nel database, una sessione PHP e un cookie.
- Quando l'utente accede a una pagina, viene chiamata una funzione che controlla se il token nella sessione o il cookie corrisponde al token memorizzato nel DB. Se lo fa, l'utente rimane connesso, in caso contrario, l'utente è disconnesso.
- Ogni volta che viene inviata una richiesta al server, questa funzione viene chiamata e i passaggi 2-3 vengono ripetuti.