当前位置: 首页 > 知识库问答 >
问题:

如何散列进入数据库的密码?[副本]

谭骏
2023-03-14
$useremail = mysqli_real_escape_string($link, $_REQUEST['useremail']);
$password = mysqli_real_escape_string($link, $_REQUEST['password']);
$confirm_password = mysqli_real_escape_string($link, $_REQUEST['confirm_password']);
$f_name = mysqli_real_escape_string($link, $_REQUEST['f_name']);
$l_name = mysqli_real_escape_string($link, $_REQUEST['l_name']);
$grade_level = mysqli_real_escape_string($link, $_REQUEST['grade_level']);

// Attempt insert query execution
$sql = "INSERT INTO Users (useremail, password, f_name, l_name, grade_level) VALUES ('$useremail', '$password', '$f_name', '$l_name', '$grade_level')";

if ($_POST["password"] === $_POST["confirm_password"])......

我试图修改代码以包含HASH_PASSWORD,但我不相信我做得对。

共有2个答案

赵智
2023-03-14

请使用PHP的内置函数password_hash()和password_verify()来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u hash()兼容包。在散列之前,请确保不要转义密码或对其使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。

(摘自密码哈希PHP7)

我还可以推荐使用PDO“准备您的声明”吗

编辑:进一步阅读后,我同意红鲱鱼。。。我收回我的建议

鱼志诚
2023-03-14

首先:除了准备好的语句外,请尝试使用PDO。它更新更安全。要对字符串进行散列,可以使用以下代码:

$hashpassword = password_hash($yourpassword, PASSWORD_DEAULT);

用于检查输入是否与您可以使用的哈希相同:

password_verify($yourinput, $dbpassword);

这将返回一个布尔值:Sotruefalse

 类似资料:
  • 我试图在我的datacontracts中对我的datamembers密码进行哈希/盐析,但当我添加一个新的学生,然后获取该学生集合时,密码字段尚未进行哈希/盐析,它会返回我键入的内容? 有人能帮我修一下吗?

  • 下午好我自己在一个安全项目中工作。我在PHP中检查登录代码时遇到问题。我不知道为什么,但当我尝试与我创建的“数据库中的密码为纯文本”的用户登录时,它会说密码不正确。 其思想不是将密码转换为散列。我知道这是一个很大的安全风险,但显然我不会将其用于专业用途。我的目的是做安全测试。 check.php: 编辑我已经纠正了错误,但我仍然有问题的日志,出现一个menssage:"姓名或密码不正确!".在我的

  • 我试图完全理解密码散列,以便能够向审计员解释它。 基于我对答案的搜索,我知道函数是的包装器。在阅读预定义常量的PHP手册时,我看到它使用作为默认整数值(基本上它使用算法来散列密码)。 让我困惑的是,变量如果省略,会生成一个随机salt,并且成本将设置为。如果我提供了更高的成本(例如:),由于我没有提供salt值,它还会生成随机salt吗?我在这里感到困惑的原因是,我没有忽略,而是提供了不同的成本。

  • 问题内容: 我需要对密码进行哈希处理以存储在数据库中。如何用Java做到这一点? 我希望使用纯文本密码,添加随机盐,然后将盐和哈希密码存储在数据库中。 然后,当用户想要登录时,我可以使用其提交的密码,从其帐户信息中添加随机盐,对其进行哈希处理,然后查看其是否等同于其帐户信息所存储的哈希密码。 问题答案: 实际上,你可以使用Java运行时内置的工具来执行此操作。Java 6中的SunJCE支持PBK

  • 我正在为拉拉维尔创建一个散列密码。现在有人告诉我使用Laravel哈希助手,但我似乎找不到它,或者我找错了方向。 如何创建laravel散列密码?在哪呢? 编辑:我知道代码是什么,但我不知道在哪里和如何使用它,所以它返回给我散列密码。如果得到散列密码,就可以手动将其插入数据库

  • 我的应用程序中有一个用例,它应该防止用户在重置密码时选择最后3个密码中的一个。我使用Angular作为前端,spring boot作为后端。在我的场景中,用户密码存储为bcrypt哈希。 如何将用户输入的密码与最近3个存储的bcrypt密码进行比较? 当我运行下面的代码片段示例时, 它生成以下bcrypt哈希。每个散列都是不同的,这是合理的,因为当我检查时,我可以看到生成的salt是随机值。 sp