php - 在 PHPass 中使用现有的 MD5 散列是否存在任何安全隐患?

标签 php security migration phpass

不知不觉中,我实现了一个使用 md5 作为哈希算法的登录系统。现在我知道得更多了,我想转而使用 PHPass。我的问题是该系统已经在生产中,要求所有用户更改他们的密码将是最令人头疼的问题。

我想出了一个足够简单的解决方案,但考虑到我之前的错误,我想确保我不会因为无知而犯下同样严重的错误。

我的解决方案如下:

改变

  1. md5($_POST['pass'])
  2. 根据数据库值检查 md5 散列密码

  1. md5($_POST['pass'])
  2. 将 md5 散列密码传递给 $hasher->HashPassword()
  3. 使用 $hasher->CheckPassword() 根据数据库中的值检查重新散列的密码

为了清楚起见,我只是重新散列 md5 版本,因为这是我在数据库中已有的版本。它不是作为一种附加的安全措施(尽管如果是,那就太好了!)。

最佳答案

  1. MD5() 问题在这个发烧友程序员社区网站上被夸大了。这个散列算法实际上没有什么不好的,特别是与通常的新手应用程序的其他部分相比。在普通 PHP 站点上使用 phpass 技术就像在草屋的纸门上使用安全锁。

  2. 要确保密码安全,防止虚拟被窃取和在其他网站上针对同一用户使用的可能性(哦,天哪!),最重要的是密码强度 和盐。不是哈希算法本身。 没有散列技术可以保护诸如“1234”或“joe”之类的愚蠢通行证。
    所以,md5 + strong password + average salt 优于 usual password + phpass

  3. phpass 现有的 md5 散列没有任何理由
    一个明智的迁移算法是

    • 检查此用户记录以获取新的散列标志。
    • 如果已设置 -
      • 获取 phpass 身份验证
    • 如果不是:
      • md5($_POST['通过'])
      • 根据数据库值检查 md5 散列密码
      • 如果正确:
        • phpass($_POST['pass'])
        • 将结果存入数据库
        • 为这条记录设置新的散列标志
    • 完成

关于php - 在 PHPass 中使用现有的 MD5 散列是否存在任何安全隐患?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297965/

相关文章:

javascript - Ajax 和 MySql 插入、检查和检索

php - 从 PHP 运行 bash 脚本停止

javascript - 单击按钮后将图像放入带有表单的页面上的 div 中

migration - Kafka数据从一台服务器拷贝到另一台

php - Codeigniter 3 迁移 sql

.net - 从 64 位进程调用 32 位代码

php - 使用 PDO 安全可靠的面向对象插入

java - Java RSA 中来自字符串的键

.net - 使用 Active Directory 进行 .NET 中的用户组和角色管理

windows - 如何在不提升权限的情况下创建事件源?