【问题标题】:password_verify returning false [duplicate]password_verify 返回 false [重复]
【发布时间】:2017-10-06 19:22:47
【问题描述】:
$query = "SELECT * FROM users WHERE username = '$username'";
    $query_run = mysqli_query($con, $query);

    if(mysqli_num_rows($query_run) < 1)
    {
        header("Location: ../index.php?login=username");
        exit(); 
    }
    else
    {
        if($row = mysqli_fetch_assoc($query_run))
        {
            //deshashing password
            $hashedPwdCheck = password_verify($password, $row['password']);
            if($hashedPwdCheck == false)
            {
                header("Location: ../index.php?login=false");
                exit(); 
            }
            elseif($hashedPwdCheck == true)
            {
                //login the user here
                $_SESSION ['u_name'] = $row['username'];
                $_SESSION ['u_email'] = $row['email'];
                $_SESSION ['u_password'] = $row['password'];
                $_SESSION ['u_id'] = $row['userid'];

                header("Location: ../index.php?login=success");
                exit(); 

上面是登录代码。

下面是存储密码并对其进行哈希处理的注册码。

                    else
                    {
                        //hashing password
                        $hashedPwd = password_hash($password, PASSWORD_DEFAULT);
                        //insert the user into the database
                        $query = "INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$hashedPwd');";
                        mysqli_query($con, $query);

                        header("Location: ../register.php?register=success");
                        exit();
                    }

请帮忙,我有点困惑为什么这不起作用。

问候, 罗斯

【问题讨论】:

标签: php mysql


【解决方案1】:

您存储散列密码的列​​不够长。它应该超过 60 个字符,我建议使用 VARCH(255)TEXT 来解决未来对 password_hash() 函数的任何更改,这可能会产生更长的哈希值。

警告

您不应将密码存储在会话数组中,因为它会暴露密码被劫持的可能性。

Little Bobbyyour script is at risk for SQL Injection Attacks. 了解 preparedMySQLi 的声明。

“没有 sql_injection,因为我的变量上有一个函数,可以将输入的文本转换为纯文本。mysqli_real_escape_string($con, $_POST['registerEmail']);

即使escaping the string 也不安全!

【讨论】:

    猜你喜欢
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多