
我正在運行帶有 MySQL 後端的 ProFTPD 伺服器,用於使用者身份驗證。
使用者的密碼目前為明文。我的目標是,所有用戶都將加密密碼儲存在資料庫中。
我知道當我想加密一個使用者的一個密碼時,我可以輸入 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 您無法在 mysql 資料庫中產生 PBKDF2 雜湊密碼或使用另一種安全演算法雜湊的密碼。
一個可能的解決方案是使用 PHP 建立 HTML 頁面。 PHP 具有預設實作的函數,用於產生安全的雜湊密碼。
我在 ProFTPD 論壇上詢問,是否有人知道這個問題的另一個也許更好的答案: https://forums.proftpd.org/smf/index.php/topic,12110.0.html
是的,我知道最初的問題是,如何使用一個命令一次性哈希資料庫中的所有密碼。但我認為,首先,我應該尋找一種安全的雜湊演算法。