讲真,直接上password_hash()就行,别再去碰那些老古董了——md5()sha1()crypt()这些,PHP官方已经明确表示不推荐了。它们不安全,而且你根本找不到一个站得住脚的理由继续用它们。

PHP如何加密用户密码_PHP加密用户密码方法【安全】

为什么不能用 md5()sha1() 存密码

这些函数设计出来的初衷就是快,而不是扛暴力破解。现代GPU一秒钟能跑上亿次md5(),就算你加了盐,也挡不住彩虹表和暴力破解工具的轮番轰炸。更要命的是:md5("password")永远输出同一个值,攻击者拿到数据库后,完全可以批量反查,一查一个准。

常见的翻车现场有哪些?

password_hash() 怎么调用才正确

这个函数帮你把盐生成、算法选择、格式封装这些破事儿全包了。你只需要做一件事:把密码传进去,把返回值存下来,验证的时候原样扔给password_verify()就行。

操作要点:

password_verify() 验证失败的典型原因

验证失败,密码没错?问题可能出在这儿。很多时候不是密码错了,而是存储或比对环节出了偏差。最常见的坑,都集中在数据流转过程中:

别忽略「密码重哈希」这个隐性需求

今天用PASSWORD_DEFAULT存的密码,过几年PHP升级,默认算法可能变成Argon2。这时候用户下次登录,password_verify()仍然能成功验证,但你可以顺手用新算法重哈希一次,再更新到数据库里——这样存量密码也会逐步升级,安全性也跟着水涨船高。

判断是否需要重哈希,方法很简单:password_needs_rehash($hash_from_db, PASSWORD_DEFAULT)返回true,就说明该更新了。这个逻辑容易被忽略,但它是让老系统持续保持安全的关键动作,值得花点时间加上。

本文转载于:https://www.php.cn/faq/2322056.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。