Mysql
 sql >> Database >  >> RDS >> Mysql

Quali sono i punti deboli di questo metodo di autenticazione utente?

Fatti un favore e usa una libreria standard per l'hashing delle tue password.

Poiché la sicurezza tende a essere molto più complicata e con possibilità di errore più invisibili di quelle che la maggior parte dei programmatori potrebbe affrontare da soli, l'utilizzo di una libreria standard è quasi sempre l'opzione più semplice e sicura (se non l'unica) disponibile.

La libreria standard :
Dai un'occhiata a:Framework di hashing delle password PHP portatile :phpass e assicurati di utilizzare il CRYPT_BLOWFISH algoritmo se possibile.

esempio di codice che utilizza phpass (v0.2):

require('PasswordHash.php');

$pwdHasher = new PasswordHash(8, FALSE);

// $hash is what you would store in your database
$hash = $pwdHasher->HashPassword( $password );

// $hash would be the $hashed stored in your database for this user
$checked = $pwdHasher->CheckPassword($password, $hash);
if ($checked) {
    echo 'password correct';
} else {
    echo 'wrong credentials';
}

PHPass è stato implementato in alcuni progetti abbastanza noti:

  • phpBB3
  • WordPress 2.5+ e bbPress
  • la versione Drupal 7, (modulo disponibile per Drupal 5 e 6)
  • altri

La cosa buona è che non devi preoccuparti dei dettagli, quei dettagli sono stati programmati da persone con esperienza e recensiti da molte persone su Internet.

Qualunque cosa tu faccia se scegli il "Lo farò da solo, grazie ' approccio, non utilizzare MD5 più . È un bell'algoritmo di hashing, ma completamente rotto per motivi di sicurezza .

Attualmente, utilizzando crypt , con CRYPT_BLOWFISH è la migliore pratica.
CRYPT_BLOWFISH in PHP è un'implementazione dell'hash Bcrypt. Bcrypt si basa sul cifrario a blocchi Blowfish, sfruttando la sua costosa configurazione della chiave per rallentare l'algoritmo.

Per ulteriori informazioni sugli schemi di archiviazione delle password, puoi anche leggere Jeff Il post sul blog di `s a riguardo:Probabilmente stai memorizzando le password in modo errato