Hashing della password
// Registrazione
$hash = password_hash($passwordInput, PASSWORD_BCRYPT, ["cost" => 12]);
// Login
if (password_verify($passwordInput, $userHash)) { /* ok */ }
Sessione
Dopo login, salvi user_id nella sessione lato server. Il client riceve un cookie con id sessione, non i dati.
Cose da NON fare
- Salvare password in chiaro o con MD5/SHA1.
- Tenere la sessione attiva all'infinito.
- Esporre messaggi tipo "email non esistente" (rivelano account validi).
Cose da fare
- Bcrypt o Argon2id, cost ≥ 12.
- Cookie
httponly,secure,samesite=lax. - Rate limiting sui tentativi.