2012-02-03 163 views
0

我試圖讓我的登錄腳本正常工作。它使用隨機鹽& md5。目前只需輸入有效的用戶名並按下提交而無需密碼即可驗證用戶身份。 (我知道MD5是不安全的,將移動到加密後,但需要得到這個工作第一簡單md5登錄腳本的問題

只是不能看到錯誤 - 任何幫助非常感謝。

if(!empty($_POST)) { 
    $user = isset($_POST['username']) ? $G['db']->escape($_POST['username']) : ""; 
    $pass = isset($_POST['password']) ? md5($G['db']->escape($_POST['password'])) : ""; 

    $account = $G['db']->queryUniqueValue("SELECT username,salt,password,uid FROM `".$C['db']['table']."` WHERE `username` = '$user'"); 

    //User exists 
    if($G['db']->numRows()==1) { 
     //If the password is right 
     if(md5($account['salt'].":".md5($pass))) { 
     //Validate the user 
     $G['login']->validateUser(array("username"=>$account['username'], "id"=>$account['uid'], "utype"=>$account['utype'])); 

     //User Validated redirect them 
     header("Location: ./?e=validpage"); 

     } else { 
+6

「我知道MD5不是安全」 --- O_O它是先進的開發商「不太安全」,你的代碼在所有 – zerkms 2012-02-03 02:58:44

+1

通行證用戶無需密碼md5(md5(md5($ salt).md5($ salt.md5($ password))。md5($ salt)))'沒有人能夠做到這一點。 srsly。 – VictorKilo 2012-02-03 03:02:29

回答

2
if(md5($account['salt'].":".md5($pass))) 

嗯...這會在數據庫中的鹽和輸入的密碼的MD5哈希值。並比較它... true。並且任何非空字符串是true。因此,如果輸入的密碼與鹽一起散列到任何非空字符串(它將每次),讓用戶在中,則此條件爲

你大概意思做這樣的事情:

if (md5($account['salt'] . ':' . md5($pass)) === $account['password']) 
              ^^^^^^^^^^^^^^^^^^^^^^^^ 
+0

輝煌,正是我所需要的,非常感謝! – Zeb99 2012-02-03 14:50:13