Php 在MySQL中安全地存储密码,但PAM仍可访问
我们有一个PHP应用程序,它只使用MD5函数存储密码(不含盐)。Php 在MySQL中安全地存储密码,但PAM仍可访问,php,mysql,authentication,openssh,pam,Php,Mysql,Authentication,Openssh,Pam,我们有一个PHP应用程序,它只使用MD5函数存储密码(不含盐)。 我们设置了OpenSSH,用于对来自同一数据库的用户进行身份验证 我们想切换到使用哈希密码,我们正在考虑:1。自己动手做,(类似于md5($salt.$”$password)或hash(“sha256”、$salt.$”$password))或2。使用php的crypt函数(如果可用,则使用OS crypt(3)。 问题是,我没有发现pammysql是否支持crypt(3)或任何替代pam模块 crpyt(3)使用用户提供的算法和
我们设置了OpenSSH,用于对来自同一数据库的用户进行身份验证 我们想切换到使用哈希密码,我们正在考虑:1。自己动手做,(类似于
md5($salt.$”$password)
或hash(“sha256”、$salt.$”$password)
)或2。使用php的crypt函数(如果可用,则使用OS crypt(3)。问题是,我没有发现pammysql是否支持crypt(3)或任何替代pam模块
crpyt(3)
使用用户提供的算法和salt:crypt('password','$5$saltstring$')
用于sha256
,它返回$5$saltstring$OH4idutlsutypded1GsuirmyTawnlWya6XR3I4/dQ5
。任何使用crypt(3)
库的语言都会看到该字符串,并知道如何将sha256
与给定的散列一起使用,并期望得到给定的结果
第一种方法是否足够,或者是否存在支持MySQL和crypt(3)的PAM模块?使用sha512,可以是MySQL实现,也可以是php实现。如果您使用md5,那么您使用的是一个已知的不安全函数,这会让您承担责任 您也可以使用3DES加密来增强安全性。在服务器exchange上问这个问题可能更好
pam_unix
支持crypt()
密码很好,sbeam。@sbeam我的理解是,可执行密码(1)和库密码(3)之间存在差异它是围绕许多加密函数的标准包装器。你有相反的信息吗?你所想到的md5碰撞vulns非常轻微;md5仍然相当好,没有立即的危险。但是,正如您所说,sha512更强大……crypt(3)
是sha256
和许多其他任何程序都可以使用的算法的系统实现。您可以通过salt的前缀选择算法。我的问题不是使用哪种算法。我知道MD5碰撞,并且我在学校里致力于制造它们。