PHP安全登录脚本 - md5哈希与我在以前的脚本中写入数据库的哈希不匹配?

Chr*_*ski 0 php md5 salt login-script

我正在尝试将PHP中的登录脚本拼凑成一个学习项目.

这是用户注册时我的数据库写入的代码.这两个值都写入数据库.

 $this->salt = md5(uniqid());
 $this->password = md5($password.$salt);
Run Code Online (Sandbox Code Playgroud)

登录后,将触发以下函数.

function challengeLogin($submittedPassword, $publicSalt, $storedPassword){
    if(md5($submittedPassword.$publicSalt) == $actualPassword){
        return 0;
    }else{
        return 1;
    };
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,在单步执行代码时,这两个值从未达到过.有人可以帮我理解为什么吗?

Lom*_*mbo 5

我认为你的代码中的问题是$salt变量是未定义的,所以它是空的.你应该用$this->salt

更改

$this->password = md5($password.$salt);
Run Code Online (Sandbox Code Playgroud)

$this->password = md5($password.$this->salt);
Run Code Online (Sandbox Code Playgroud)