sql选择不使用哈希

时间:2013-09-23 22:02:01

标签: php sql

我仍然是php的新手,我无法理解这里有什么问题。我有一个PHP脚本,我正在使用它作为登录脚本(由于我还在学习,它背后的简单功能)。我确保表单中的输入值与mysql数据库中的输入值匹配。下面的代码是导致问题的sql:

"SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND `password`='$password_hash'"

当我将上面的代码更改为下面的代码时,它可以工作(区别在于我手动插入md5哈希):

"SELECT `id` FROM `golden_acres_username` WHERE `uname`='$username' AND `password`='81dc9bdb52d04dc20036'"

设置的变量是:

$login_button = $_POST['login_button'];             
$username = $_POST['username'];
$password = $_POST['password'];                 
$password_hash = md5($_POST['password']);

任何人都可以在这里解释我错在哪里。

2 个答案:

答案 0 :(得分:2)

尝试

"SELECT `id` FROM `golden_acres_username` 
WHERE `uname`='".$username."' AND `password`='".$password_hash."'"

答案 1 :(得分:1)

首先,您应该寻找更安全的密码哈希机制,如password_hash()

其次,您目前存在重要的SQL注入漏洞,因为您没有使用参数化预准备语句转义输入。

在你至少完成后两者之前,真的不值得讨论这个解决方案。