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