【问题标题】:what is the method to check logging hash encrypted password matches with saved hashed password in the database检查日志哈希加密密码与数据库中保存的哈希密码匹配的方法是什么
【发布时间】:2017-12-07 10:40:30
【问题描述】:

我使用 sha512.js 文件,出于安全目的,我将密码作为哈希值与 post 请求一起发送。现在我想检查数据库中的保存哈希密码。 当我检查浏览器时,可以将密码视为哈希值。然后在我的 php 文件中,我通过发布请求获取密码值。然后我想用数据库保存的值来检查它。

我的帖子请求密码值如 - 7d4ad2ce44e568064beb480525a563daf85c676795f4083b7e177553af273ffecff41c2bbbe64428d9c0ca37744bcea4de218d356037337bcd41129bb1681b13

$email = $_POST['email'];
$passwordFromPost = $_POST['p'];

// $passwordFromPost = '7d4ad2ce44e568064beb480525a563daf85c676795f4083b7e177553af273ffecff41c2bbbe64428d9c0ca37744bcea4de218d356037337bcd41129bb1681b13';

我的数据库密码是-:

$hashedPasswordFromDB = '$2y$11$2Nmsc11WWGZ1xEB8P3zWCezVv4QCe48BVQ8vJbXOkByUXIioWH.AS'

if (password_verify($passwordFromPost, $hashedPasswordFromDB)) {
    echo 'Password is valid!';
} else {

如何使用 db 哈希值检查发布请求哈希值。

【问题讨论】:

  • 在将密码发送到网络服务器之前,您在浏览器中对密码进行哈希处理有什么特别的原因吗?如果您使用的是 https(应该如此),那么您不需要这样做
  • 创建用户记录时是否通过注册屏幕发送相同的哈希?
  • 我发送密码值并将其哈希值保存在数据库中。然后密码行 vancab12390909 和哈希值将在数据库中,如 $2y$11$2Nmsc11WWGZ1xEB8P3zWCezVv4QCe48BVQ8vJbXOkByUXIioWH.AS
  • 我使用了这个函数 $hash = password_hash($passwordFromPost, PASSWORD_BCRYPT, $options);
  • 您应该使用带有安全证书的 https 页面(而不是 http),而不是使用 sha512.js……这就是每个主要网站在浏览器和服务器之间维护安全性的方式

标签: php security encryption login hash-function


【解决方案1】:

不要在客户端中散列密码,使用 HTTPS 在 POST 数据中以纯文本形式发送密码。发送密码的哈希值只会使哈希值成为密码。

使用 PHP 使用 password_hashpassword_verify,这对是安全且易于使用的。

更多信息:当保存密码验证器时,仅使用哈希函数是不够的,仅添加盐对提高安全性几乎没有作用。而是使用诸如PBKDF2Rfc2898DeriveBytesArgon2password_hashBcrypt 之类的函数或持续时间约为 100 毫秒的类似函数。关键是让攻击者花费大量时间通过蛮力查找密码。

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 2016-10-05
    • 2013-05-19
    • 2021-04-25
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多