sql >> Base de Datos >  >> RDS >> Mysql

¿Cuáles son las debilidades de este método de autenticación de usuario?

Hazte un favor y usa una biblioteca estándar por cifrar sus contraseñas.

Debido a que la seguridad tiende a ser mucho más complicada y con más posibilidades de errores invisibles que la mayoría de los programadores podrían abordar solos, usar una biblioteca estándar es casi siempre la opción más fácil y segura (si no la única) disponible.

La biblioteca estándar :
Eche un vistazo a:Marco portátil de hash de contraseñas de PHP :phpass y asegúrese de usar el CRYPT_BLOWFISH algoritmo si es posible.

ejemplo de código usando 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 se ha implementado en algunos proyectos bastante conocidos:

  • phpBB3
  • WordPress 2.5+ así como bbPress
  • el lanzamiento de Drupal 7, (módulo disponible para Drupal 5 y 6)
  • otros

Lo bueno es que no necesita preocuparse por los detalles, esos detalles han sido programados por personas con experiencia y revisados ​​por muchas personas en Internet.

Hagas lo que hagas si vas por el 'lo haré yo mismo, gracias ' enfoque, no utilice MD5 más . Es un buen algoritmo hash, pero totalmente roto por razones de seguridad .

Actualmente, usando crypt , con CRYPT_BLOWFISH es la mejor práctica.
CRYPT_BLOWFISH en PHP es una implementación del hash Bcrypt. Bcrypt se basa en el cifrado de bloque Blowfish, haciendo uso de su costosa configuración de clave para ralentizar el algoritmo.

Para obtener más información sobre esquemas de almacenamiento de contraseñas, también puede leer Jeff `s entrada de blog al respecto:Probablemente estés almacenando contraseñas incorrectamente