簡體   English   中英

password_verify不驗證哈希

[英]password_verify doesn't verify hash

我通過password_hash對插入的密碼進行哈希處理。 我使用password_verify驗證了它們。

但是,當我在數據庫中插入哈希密碼並嘗試對其進行驗證時,兩個輸出始終彼此不同。

我的頁面如下

main_login.php(窗體):

<?php include 'header.php';?>
<body>
<form role="form" method="post" action="login.php">
  <div class="form-group">
    <label for="usrname">Username:</label>
    <input type="text" class="form-control" name="usrname" placeholder="Enter username">
  </div>
  <div class="form-group">
    <label for="passwrd">Password:</label>
  </div>
    <input type="password" class="form-control" name="passwrd" placeholder="Enter password">
    <br>
  <input type="checkbox">Remember Me
  <br>
  <br>
  <button type="submit" class="btn btn-default">Submit</button>
</form>
</body>
</html>

login.php(處理程序):

<?php
include 'vars.php';
include 'header.php';
$sql="SELECT * FROM members WHERE usrname='$usrname'";
$result=mysqli_query($con,$sql);
$count=mysqli_num_rows($result);
$row=mysqli_fetch_row($result);
$verify=password_verify($hash,$row[2]);
if($verify){
    $_SESSION["usrname"]=$usrname;
    echo "Correct";
}
else {
    echo "user: " . $usrname. "<br>";
    echo "pass: " . $hash. "<br>";
    echo "db: " . $row[2]."<br>";
    echo "Wrong Username or Password";
}
?>

vars.php:

<?php
$h='localhost';$u='caelin';$p='****';$d='ombouwnh';
$con=mysqli_connect($h,$u,$p,$d);
$usrname=$_POST['usrname'];
$passwrd=$_POST['passwrd'];
$hash=password_hash($passwrd, PASSWORD_DEFAULT);
?>

當我嘗試使用用戶名“ caca”和密碼“ caca”登錄時,每次重試時,兩者都會得到不同的輸出。 我在stackoverflow上找不到此特定問題。

TIA

PS。 如果您需要更多詳細信息,請詢問他們

函數password_verify(); 有兩個參數; 非哈希輸入,以及與其進行比較的存儲哈希。 它會自動對未哈希的輸入進行哈希處理,以將其與存儲的版本進行比較。 因此,您的初始代碼是重新哈希一個已經哈希的密碼。 應該看起來像這樣:

$verify=password_verify($_POST['passwrd'],$row[2]);

if($verify){
    $_SESSION["usrname"]=$usrname;
    echo "Correct";
}
else {
    echo "user: " . $usrname. "<br>";
    echo "pass: " . $hash. "<br>";
    echo "db: " . $row[2]."<br>";
    echo "Wrong Username or Password";
}

您重新設置了密碼-只需將純文本密碼和哈希(來自db)傳遞給password_verify即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM