2

私はこのようなものに少し慣れていませんが、これは私のログイン認証ページです。

function encrypt($password, $salt) {
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($salt), $password, MCRYPT_MODE_CBC, md5(md5($salt))));
}

$query = "SELECT * FROM users WHERE LOWER(`username`) = :user";
$stmt = $dbh->prepare($query);
$stmt->bindValue(':user', strtolower($_POST['username']));
$stmt->execute();

if ($stmt->rowCount() == 1) {
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    if (encrypt($_POST['password'], $row['salt']) == $row['password']) {
        echo "Logged in!";
    }
}

私のデータベースには、、、、およびの列がありusernameます。パスワード列には、暗号化されたパスワードが含まれています。passwordsalt

私のワークフローはここで正しいですか?

4

1 に答える 1

1

パスワードを暗号化しないでください。誰かがあなたのユーザーテーブルを取得できる場合、彼はすべてのパスワードを簡単に元に戻すことができます。

$password = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($salt), base64_decode($row['password']), MCRYPT_MODE_CBC, md5(md5($salt)));

パスワードをハッシュするために特別に設計されたハッシュ関数を使用することをお勧めします。

于 2012-10-03T20:52:21.850 に答える