不知不觉中,我实现了一个使用 md5 作为哈希算法的登录系统。现在我知道得更多了,我想转而使用 PHPass。我的问题是该系统已经在生产中,要求所有用户更改他们的密码将是最令人头疼的问题。
我想出了一个足够简单的解决方案,但考虑到我之前的错误,我想确保我不会因为无知而犯下同样严重的错误。
我的解决方案如下:
改变
md5($_POST['pass'])
- 根据数据库值检查 md5 散列密码
到
md5($_POST['pass'])
- 将 md5 散列密码传递给
$hasher->HashPassword()
- 使用
$hasher->CheckPassword()
根据数据库中的值检查重新散列的密码
为了清楚起见,我只是重新散列 md5 版本,因为这是我在数据库中已有的版本。它不是作为一种附加的安全措施(尽管如果是,那就太好了!)。
最佳答案
MD5() 问题在这个发烧友程序员社区网站上被夸大了。这个散列算法实际上没有什么不好的,特别是与通常的新手应用程序的其他部分相比。在普通 PHP 站点上使用 phpass 技术就像在草屋的纸门上使用安全锁。
要确保密码安全,防止虚拟被窃取和在其他网站上针对同一用户使用的可能性(哦,天哪!),最重要的是密码强度 和盐。不是哈希算法本身。 没有散列技术可以保护诸如“1234”或“joe”之类的愚蠢通行证。
所以,md5 + strong password + average salt
优于usual password + phpass
phpass 现有的 md5 散列没有任何理由
一个明智的迁移算法是- 检查此用户记录以获取新的散列标志。
- 如果已设置 -
- 获取 phpass 身份验证
- 如果不是:
- md5($_POST['通过'])
- 根据数据库值检查 md5 散列密码
- 如果正确:
- phpass($_POST['pass'])
- 将结果存入数据库
- 为这条记录设置新的散列标志
- 完成
关于php - 在 PHPass 中使用现有的 MD5 散列是否存在任何安全隐患?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297965/