2012-02-03 12 views
0

私はログインスクリプトを動作させようとしています。それはランダムな塩& md5を使用します。現在、有効なユーザー名を入力してパスワードなしでsubmitを押すだけで、ユーザーが認証されます。 (私はmd5が安全でないことを知っていますが、後でbrcryptに移動しますが、この作業を最初に行う必要があります簡単な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

は--- O_Oそれは高度な開発者のための「安全でない」である「私はMD5は安全ではありません知っている」、あなたのコードは、すべての – zerkms

+1

時にパスワードなしでユーザーを渡しますmd5(md5($ salt).md5($ salt.md5($ password))。md5($ salt)))誰もそれに到達することはできませんでした。 srsly。 – VictorKilo

答えて

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

うーん...これは、データベース中の塩と入力されたパスワードのMD5ハッシュを作成します。それを... trueと比較します。空でない文字列はtrueです。したがって、この条件は(毎回)の空でない文字列にハッシュで入力したパスワードがである場合、になります。あなたは、おそらくのような何かを行うことを意図

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

鮮やかな、私が必要としたもの、多くのありがとう! – Zeb99