PHP密码加密存储教程_PHP安全保存用户密码方法

admin 百科 12
PHP安全存储密码应使用password_hash()和password_verify()函数,它们自动加盐、选算法(默认bcrypt或Argon2)、抗暴力破解;禁用md5/sha1等弱哈希及手动拼接salt。

PHP密码加密存储教程_PHP安全保存用户密码方法-第1张图片-佛山资讯网

PHP中安全存储用户密码,核心是不加密,而用强哈希加盐(现代已由PHP自动处理)。别再用md5、sha1或自己写salt拼接——这些早已不安全。PHP自5.5起内置password_hash()password_verify(),简单、可靠、抗暴力、向前兼容。

用 password_hash() 生成安全哈希

它默认使用bcrypt算法(可选argon2i/argon2id),自动随机加盐、控制迭代次数,无需手动管理salt:

  • 直接传入明文密码,一行生成哈希值:
    php
    $hash = password_hash("user_password123", PASSWORD_DEFAULT);
    // 输出类似:$2y$10$9xZzQvLmRbGkEaFtJcNpOeUfDgHiJkLmNoPqRsTuVwXyZaBcDeFgH
  • PASSWORD_DEFAULT未来可能升级算法,生成的哈希包含版本标识,password_verify()能自动识别并验证
  • 如需固定算法(如部署环境限制),可用PASSWORD_ARGON2ID(PHP 7.2+),但确保系统支持libargon2

用 password_verify() 校验登录密码

登录时,拿用户提交的明文密码 + 数据库里存的完整哈希值,交给它判断真假:

  • 代码极简:
    $hash = "数据库查出的哈希字符串";
    if (password_verify($_POST['password'], $hash)) {
      echo "登录成功";
    } else {
      echo "密码错误";
    }
  • 它会自动提取哈希里的salt、算法、成本参数,重做一遍哈希比对,完全屏蔽实现细节
  • 即使哈希格式升级(如从bcrypt切到argon2),只要用PASSWORD_DEFAULT生成,老哈希仍能被新PHP正确验证

必要时重哈希旧密码(平滑升级)

如果老系统用了md5或弱哈希,可在用户下次登录时悄悄升级:

标签: php word go cookie php安全 敏感数据

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~