gpt4 book ai didi

PHP-将密码与root密码进行比较

转载 作者:行者123 更新时间:2023-11-29 08:54:42 25 4
gpt4 key购买 nike

希望这很简单。如果用户能够提供“root”密码,我会尝试向他们授予管理权限。有没有办法将这个新输入的密码与 root 密码进​​行比较?这是我的代码到目前为止的样子:

<form action='index.php?login=yes' method=POST>
Password: <input type=password name='pwd'><br />
<input type=submit value='Login' />
</form>

<?php

$pass=$_POST['pwd'];
$login=$_GET['Login'];

if($login=='yes') {

$con=mysql_connect('localhost','root','');
mysql_select_db('Login');

$get=mysql_query("SELECT count(id) FROM Login WHERE pwd = '$pass'");
$result=mysql_result($get, 0);

mysql_close($con);

if($result!=1)
echo"Login Failure!";
else {
echo"Login Success";
};
};
?>
</p>

请温柔一些,因为 PHP 与我习惯的有很大不同(我更喜欢 java)。谢谢!

最佳答案

您绝对应该考虑使用盐对密码进行哈希处理。 md5() 算法并不真正推荐用于安全环境,但它至少使工作变得更加困难。

在数据库中保存密码时,您应该执行类似的操作

$salt = 'dhg1d9h12h1029he01h2e1'; // Just have something random and long here
$hashedpassword = md5($salt.md5($password, true)); // Or any other combination you like here

然后,您可以将 $hashedpassword 保存到数据库中,如下所示:

mysql_query(sprintf("UPDATE Login SET pwd = '%s' WHERE username = '%s'",  
mysql_real_escape_string($hashedpassword),
mysql_real_escape_string($username)
));

然后,当您想要检查密码是否匹配时,请执行与上述完全相同的步骤来计算 $hashedpassword 值,但传入其测试密码,然后将其与数据库中的内容进行比较,例如:

$result = mysql_query(sprintf("SELECT (pwd = '%s') AS authenticated FROM Login WHERE username = '%s'",
mysql_real_escape_string($hashedpassword),
mysql_real_escape_string($username)
));
$row = mysql_fetch_assoc($result);
if ($row['authenticated']) {
echo "Success!";
}

无论如何,你看起来才刚刚开始,所以我会非常小心你如何进行实际的密码验证。据我了解,您想要使用 bcrypt2 而不是 md5,但我会让您阅读如何在 PHP 中执行此操作;你绝对应该阅读这些内容。

我还会检查您的登录表的结构。您可能希望其中有多个用户,否则为什么不将哈希存储在代码本身而不是数据库中呢?

此外,您还可以通过检查 $_SERVER['REQUEST_METHOD'] == 'POST' 来确定是否有人正在提交表单或获取表单,这比使用 get URL 参数更干净(尽管我猜没有什么问题)使用另一种方法...)

关于PHP-将密码与root密码进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10291788/

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