
Я использую сервер ProFTPD с MySQL-бэкэндом для аутентификации пользователей.
Пароли пользователей в настоящее время находятся в открытом виде. И моя цель заключается в том, чтобы все пользователи имели зашифрованные пароли, хранящиеся в базе данных.
Я знаю, что когда мне нужно зашифровать один пароль одного пользователя, я могу ввести команду SQL:
update users set password= md5('MyPassword') where password="myPassword";
Но как мне зашифровать все пароли всех пользователей?
Надеюсь, кто-нибудь сможет мне помочь.
решение1
update users set password= md5('MyPassword') where password="myPassword";
Использовать MD5 в качестве хэша небезопасно. MD5 устарел
Безопасные алгоритмы хеширования — это PBKDF2, bcrypt, scrypt и т. д. Кроме того, все алгоритмы хеширования должны использоваться с солью. @Gerald Schneider опубликовал очень хорошую ссылку по этой теме:https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords
Проблема в том, что ни один из этих алгоритмов сохранения хэша не реализован в mysql. В ProFTPD в модуле mod sql есть режим аутентификации для PBKDF2. Но нет способа OOTB, чтобы вы могли сгенерировать хэшированный пароль PBKDF2 или пароль, хэшированный другим безопасным алгоритмом, в базе данных mysql.
Возможным решением было бы создание HTML-страницы с помощью PHP. PHP имеет функции, реализованные по умолчанию, для генерации безопасных хешированных паролей.
Я спросил на форуме ProFTPD, знает ли кто-нибудь другой, возможно лучший ответ на эту проблему: https://forums.proftpd.org/smf/index.php/topic,12110.0.html
Да, я знаю, что изначально вопрос был в том, как можно хешировать все пароли в моей базе данных одновременно одной командой. Но я думаю, что сначала мне следует поискать безопасный алгоритм хеширования.