我正在尝试让我的登录脚本正常工作。它使用随机盐和 md5。目前,只需输入有效的用户名并按提交而不输入密码即可对用户进行身份验证。 (我知道 md5 不安全,稍后会转移到 brcrypt,但需要先使其正常工作)
只是看不到错误 - 非常感谢任何帮助。
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 {
最佳答案
if(md5($account['salt'].":".md5($pass)))
嗯...这会在数据库中创建盐的 MD5 哈希值和输入的密码。并将其与...true
进行比较。任何非空字符串都是true
。因此,此条件为:如果输入的密码与盐哈希值一起生成任何非空字符串(每次都会如此),让用户进入。
您可能打算做类似的事情:
if (md5($account['salt'] . ':' . md5($pass)) === $account['password'])
^^^^^^^^^^^^^^^^^^^^^^^^
关于php - 简单 md5 登录脚本的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123083/