繁体   English   中英

无需密码即可登录

[英]Possible to login without the digits in the password

我刚刚发现我的密码保护区域没有受到保护。 需要密码才能使用数字。 现在,如果密码末尾有数字,只要密码的az部分正确,就可以接受登录。 为什么会这样,我该如何纠正呢? (PHP 5.4.28)

function generate_hash($password)
{
    $salt = openssl_random_pseudo_bytes(22);
    $salt = '$2a$%13$' . strtr($salt, array('_' => '.', '~' => '/'));
    return crypt($password, $salt);

}

$bind = array(":email" => $email, ":password" => crypt($password, generate_hash($password) ) );
            $results = $db->select("users", 'email=:email AND password=:password', $bind);

我不知道您的问题的具体情况,但是您使用的哈希完全错误。 要使用crypt ,请执行以下操作:

注册时:

  • 创建随机盐
  • 以正确的格式创建$salt参数: $2a$xx$... (注意:否% ,这可能会导致问题)
  • crypt($password, $salt)散列密码
  • 将哈希存储在数据库中

登录时:

  • 根据输入的电子邮件从数据库中检索密码哈希
  • 使用crypt($enteredPassword, $databaseHash)生成哈希
  • 比较两个哈希

你根本不这样做。 您可能还应该改用password_hash ,它可以避免使用原始crypt API时遇到的许多陷阱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM