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

标签 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$') 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/

相关文章:

php - 如果变量为空,我希望 PHP/MySQL 为变量分配不同的值

php - Symfony 中预期的不同类型

php - AJAX 调用问题 - 没有数据传递(这里相对缺乏经验!)

Spring MVC 中的 Java 到 JSON 对象映射结果 400 Bad request 错误

ios - 避免在 Meteor Facebook 身份验证插件中按 'done'

php - 使用带有静态页面插件的前端编辑器

php - 购物车中不显示总金额

php - 来自数据库的耗时

python - 如何在没有 (L)GPL 库的情况下在 Python 中创建双重身份验证 HTTPS 客户端?

ios - AWSWebIdentityCredentialsProvider 如何获取参数值?