
Estou executando um servidor ProFTPD com back-end MySQL para autenticação de usuário.
As senhas dos usuários estão atualmente em texto simples. E meu objetivo é que todos os usuários tenham senhas criptografadas armazenadas no banco de dados.
Eu sei que quando quero criptografar uma senha de um usuário posso digitar o comando SQL:
update users set password= md5('MyPassword') where password="myPassword";
Mas como posso criptografar todas as senhas de todos os usuários?
Espero que alguém possa me ajudar.
Responder1
update users set password= md5('MyPassword') where password="myPassword";
Não é seguro usar MD5 como hash. MD5 está obsoleto
Os algoritmos de hash seguros são PBKDF2, bcrypt, scrypt etc. E, além disso, todos os algoritmos de hash devem ser usados com salt. @Gerald Schneider postou um link muito bom para este tópico:https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords
O problema aqui é que nenhum desses algoritmos de salvamento de hash é implementado no mysql. Existe um modo de autenticação para PBKDF2 no ProFTPD no módulo mod sql. Mas não há como OOTB gerar uma senha com hash PBKDF2, ou uma senha com hash com outro algoritmo seguro, em um banco de dados mysql.
Uma possível solução seria criar uma página HTML com PHP. O PHP possui funções, implementadas por padrão, para gerar senhas seguras com hash.
Perguntei no fórum do ProFTPD se alguém conhece outra resposta, talvez melhor, para o problema: https://forums.proftpd.org/smf/index.php/topic,12110.0.html
Sim, eu sei que a pergunta original era: como alguém poderia fazer o hash de todas as senhas do meu banco de dados de uma só vez com um comando. Mas acho que, primeiro, deveria procurar um algoritmo de hash seguro.