使用用户名和密码进行 SQL 注入
Posted
技术标签:
【中文标题】使用用户名和密码进行 SQL 注入【英文标题】:SQL injection with username and password 【发布时间】:2016-02-09 11:17:46 【问题描述】: $sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender,
FROM USERS_TABLE
WHERE (name = ’$user’ OR email = ’$user’) AND pass = ’$pass’");
我尝试以用户身份登录(使用我想要“测试”的用户):
test')");--
我认为应该取消通过检查,但我不知道我做错了什么?
【问题讨论】:
How can I prevent SQL-injection in php?的可能重复 他不是在问如何预防。 我在这里看到 3 个语法错误。我也不明白你的问题的标题。 好吧,我的错。确实以另一种方式理解了这个问题。 (显然我不是唯一一个感到困惑的人)。 好吧,我没有这个问题。 @我如果你需要我。 ciao 【参考方案1】:您不应使用“"
”。该字符串中的"
不是字符串本身的一部分。试试这个:
test')--
【讨论】:
【参考方案2】:在您的情况下,只需使用 mysql_real_escape_string
进行检查 (documentation)。
$user = mysql_real_escape_string($user);
$pass = mysql_real_escape_string($pass);
$sel1 = mysql_query (...
请参阅How can I prevent SQL injection in PHP?。
请注意,mysql_query()
现在已被弃用。
【讨论】:
我得到了那个易受攻击的 sql 语句,目标是将注入输入到 UI 的用户名字段中,以便我可以使用任何用户名登录。我想我应该更好地表达我的问题。mysql_real_escape_string
已弃用。
当然可以,与问题中出现的mysql_query
相同(并在答案中提到)。以上是关于使用用户名和密码进行 SQL 注入的主要内容,如果未能解决你的问题,请参考以下文章