gpt4 book ai didi

带有哈希的 php 密码检查不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:14 24 4
gpt4 key购买 nike

我用php写了一个登录页面和一个检查页面。在我的本地机器上它可以工作,但在服务器上它不起作用(如果我在 Windows 上并且服务器在 Linux 上很重要)。

检查页面的代码如下:

$user = $_POST['userName'];
$pass = $_POST['pass'];

$saltSQL = 'SELECT salt FROM agents WHERE name="' . $user . '"';
$saltResult = mysql_fetch_array(mysql_query($saltSQL));
$salt = $saltResult['salt'];

$passToCheck = hash('sha512', $salt + $pass);

$rowAgent = mysql_fetch_array(mysql_query('SELECT * FROM agents WHERE name ="' . strtolower($user) . '"'));

if ($rowAgent['password'] != $passToCheck) {
header("location:mainLogin.php");
exit;
}

header("location:selectamount_new.php");

奇怪的是,当我输入一些带有字母的密码时,系统会让我进入(无论如何),而当我只输入数字时,系统会正确检查密码并且不会让我进入(将将我重定向到 mainLogin.php 而不是 selectamount_new.php)。

同样在我的本地机器上它工作得很好,问题是当我使用 Git 将代码推送到 Linux 机器 (AWS) 时。

最佳答案

问题出在$salt + $pass。这不是串联,是 + 运算符,就像在数学中一样。所以 string + string = nothing,这意味着每个密码都会匹配。 number + string = number,这就是为什么对数字有效。您应该在此处使用 . 运算符,这意味着连接。

无论如何,如果您不针对 SQL 注入(inject)进行防护,则无论此修复如何,任何人都将能够登录您的站点。

关于带有哈希的 php 密码检查不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32432662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com