2012-02-03 145 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