
Estoy ejecutando un servidor ProFTPD con un backend MySQL para la autenticación de usuarios.
Las contraseñas de los usuarios están actualmente en texto sin formato. Y mi objetivo es que todos los usuarios tengan contraseñas cifradas almacenadas en la base de datos.
Sé que cuando quiero cifrar una contraseña de un usuario puedo escribir el comando SQL:
update users set password= md5('MyPassword') where password="myPassword";
Pero, ¿cómo puedo cifrar todas las contraseñas de todos los usuarios?
Espero que alguien pueda ayudarme.
Respuesta1
update users set password= md5('MyPassword') where password="myPassword";
No es seguro utilizar MD5 como hash. MD5 está en desuso
Los algoritmos hash seguros son PBKDF2, bcrypt, scrypt, etc. Y, además, todos los algoritmos hash deben usarse con salt. @Gerald Schneider publicó un enlace muy bueno para este tema:https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords
El problema aquí es que ninguno de estos algoritmos hash de guardado está implementado en MySQL. Hay un modo de autenticación para PBKDF2 en ProFTPD en el módulo mod sql. Pero no hay forma de que OOTB pueda generar una contraseña con hash PBKDF2, o una contraseña con otro algoritmo seguro, en una base de datos MySQL.
Una posible solución sería crear una página HTML con PHP. PHP tiene funciones, implementadas de forma predeterminada, para generar contraseñas hash seguras.
Pregunté en el foro de ProFTPD si alguien conoce otra respuesta, tal vez mejor, al problema: https://forums.proftpd.org/smf/index.php/topic,12110.0.html
Sí, sé que la pregunta original era: ¿cómo se podrían codificar todas las contraseñas de mi base de datos a la vez con un solo comando? Pero creo que, primero, debería buscar un algoritmo hash seguro.