我们有一个 PHP 应用程序,它只使用 MD5 函数(没有加盐)来存储密码。
我们将 OpenSSH 设置为使用 pam-mysql对同一数据库中的用户进行身份验证。
我们想改用散列密码,我们正在考虑: 1. 自己做,(类似于 md5($salt."$".$password)
或 hash("sha256", $salt."$".$password)
),或 2. 使用 php 的 crypt 函数(如果可用,它使用 OS crypt(3))。
问题是我还没有发现 pam-mysql 是否支持 crypt(3) 或任何支持的替代 pam 模块。
crpyt(3)
使用用户提供的算法和盐:crypt('password', '$5$saltstring$')
for sha256
返回 $5$saltstring$OH4IDuTlsuTYPdED1gsuiRMyTAwNlRWyA6Xr3I4/dQ5
。任何使用 crypt(3)
库的语言都将看到该字符串并知道将 sha256
与给定的哈希一起使用并期望给定的结果。
第一种方法是否足够,或者是否有一些支持 MySQL 和 crypt(3) 的 PAM 模块?
最佳答案
使用 sha512,mysql 实现或 php 实现。如果您使用 md5,则您使用的是已知的不安全函数,这会使您承担责任。
关于php - 在 MySQL 中安全地存储密码,但仍可通过 PAM 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059988/