0
我最近從互聯網上用blowfish加密瞭解到,我能夠在用戶向數據庫註冊時加密用戶密碼。但是,當我想驗證用戶在登錄時輸入的值。它們所鍵入的值與數據庫中的值不匹配。用blowfish加密
<?php session_start(); ?>
<?php
include("database.php");
include("cryptpassword.php");
$idno = $_POST['ID_Number'];
$password = $_POST['Password']; //inputPass
$conn = dbConnect();
if (!$conn)
die("Couldn't connect to MySQL");
$query = "select * from user where idno='$idno'";
//$queryadmin = "select * from user where idno='$idno' and usertype='admin'";
$result = mysql_query($query, $conn);
//$resultadmin = mysql_query($queryadmin, $conn);
if($row = mysql_fetch_assoc($result)){
$set_password = $row['employeepassword'];
echo $set_password;
}
//$row = mysql_fetch_assoc($resultadmin);
//$set_password = $row['employeepassword'];
$input_password = crypt($password, $set_password);
echo "</br /> $input_password";
if($input_password == $set_password) {
echo "</br />welcome";
}
else {
echo "</br />idiot";
}
dbDisconnect($conn);
?>
兩個輸出我得到如下:
$ 2Y $ 10 $ dkGpWiujoaiegVABKvFXruQ $ 2Y $ 10 $ dkGpWiujoaiegVABKvFXruQzkyCZIbFCtxq2N/5LmfLbi5dBHW0bS
第一個是從數據庫,而第二值是從用戶輸入,我不知道爲什麼用戶輸入有額外的值導致驗證失敗。
**危險**:您正在使用[一個**過時的**數據庫API](http://stackoverflow.com/q/12859942/19068)並應使用[現代替換](http://php.net) /manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin
我使用[this hashing library](http://openwall.com/phpass/)它非常方便 – Dale