必须用password_hash函数配合bcrypt算法哈希密码,生成60字符以$2y$开头的哈希值;登录时用password_verify恒定时间验证;升级时用password_needs_rehash检测并更新。

在搭建PHP网站时,必须用password_hash函数配合bcrypt算法对用户密码进行不可逆哈希处理,直接存储明文或MD5/SHA1等弱哈希值会导致用户账户批量泄露。
生成安全的密码哈希值
调用password_hash()函数,传入原始密码和PASSWORD_BCRYPT算法标识:
使用【$hash = password_hash($password, PASSWORD_BCRYPT);】生成哈希字符串。该函数自动随机生成salt并嵌入结果中,无需手动管理salt。
生成的哈希值长度固定为60字符,以$2y$开头(PHP 7.0+默认),若返回false说明输入密码为空或超长(超过PHP_MAX_PASSWORD_LEN,通常为4096字节)。
验证用户登录时的密码
用户提交登录凭证后,用password_verify()比对明文密码与数据库中存储的哈希值:
执行【if (password_verify($input_password, $stored_hash)) { /* 登录成功 */ }】。该函数恒定时间比较,可防御时序攻击。
SEO关键词密度优化与页面审计技能。使用场景:①提供页面路径与关键词进行SEO优化;②提升页面关键词密度;③提升搜索引擎排名;④进行SEO审计(meta标签、OG、hreflang等)。触发词:关键词密度、SEO优化、关键词优化等。
不要用==或===直接比对哈希值——这会绕过恒定时间机制且无法处理bcrypt参数变更后的兼容校验。
升级旧密码哈希以适配更强参数
当PHP版本升级或需调整bcrypt成本因子时,利用password_needs_rehash()检测是否需要重新哈希:
第一步:从数据库读取用户当前哈希值$hash;
第二步:检查是否需更新——【if (password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 12]))】;
第三步:若返回true,则用新参数重新哈希密码并存回数据库。此操作仅在用户下次成功登录时触发,不影响历史哈希的有效性。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










