PHP登录系统 - 我做得对吗?

时间:2012-10-03 20:12:12

标签: php security login

我对这些东西不熟悉,但这是我的登录授权页面。

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!";
    }
}

在我的数据库中,我有usernamepasswordsalt列。密码列包含加密密码。

我的工作流程在这里是否正确?

1 个答案:

答案 0 :(得分:1)

您不应加密密码。如果有人能够检索您的用户表,他可以轻松撤消所有密码:

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

最好使用hash function that is specifically designed for hashing passwords