Vai al contenuto
Miraat·dweb developer journey, reflected

Autenticazione: sessioni e bcrypt

Login con email + password fatto bene: hashing, sessione, logout, brute-force.

Core 30 minuti Prerequisiti: Routing e MVC

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.

Risorse consigliate