php - 简单 md5 登录脚本的问题

标签 php mysql authentication md5

我正在尝试让我的登录脚本正常工作。它使用随机盐和 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/

相关文章:

javascript - 单击弹出窗口中的按钮搜索结果

php - 如何用PHP写入mysql数据库中的所有记录?

c# - MySQL 将文件保存到数据库

php - 通用 REST 前端 - 它存在吗?

php - 向MySQL表添加数据的表单

php - 在php中使用Newton Raphson计算年利率

mysql - 使用 CONCAT_WS 错误更新表

java - 如何获取登录/错误文件中显示的图像和 CSS 以进行 Tomcat 身份验证

c# - 要求对 OWIN 应用程序的所有请求进行身份验证

node.js - 使用 AWS Amplify 对 Google 登录进行身份验证 - federatedSignin 返回 null?