在MySQL中安全地存储密码,但仍然可以通过PAM访问

时间:2011-11-09 03:27:29

标签: php mysql authentication openssh pam

我们有一个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$')用于sha256,返回$5$saltstring$OH4IDuTlsuTYPdED1gsuiRMyTAwNlRWyA6Xr3I4/dQ5。任何使用crypt(3)库的语言都会看到该字符串并知道使用给定哈希值sha256并期望给定结果。

第一种方法是否足够,或者是否有一些PAM模块支持MySQL和crypt(3)?

2 个答案:

答案 0 :(得分:0)

使用sha512,mysql实现或php实现。如果您使用md5,那么您将使用已知的不安全功能,这将使您承担责任。

答案 1 :(得分:0)

您也可以使用3DES加密来提高安全性。