【问题标题】:SQL injection with username and password使用用户名和密码进行 SQL 注入
【发布时间】: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')");--

我认为应该取消通过检查,但我不知道我做错了什么?

【问题讨论】:

  • 他不是在问如何预防。
  • 我在这里看到 3 个语法错误。我也不明白你的问题的标题。
  • 好吧,我的错。确实以另一种方式理解了这个问题。 (显然我不是唯一一个感到困惑的人)。
  • 好吧,我没有这个问题。 @我如果你需要我。 ciao

标签: php sql sql-injection code-injection


【解决方案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 相同(并在答案中提到)。
    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多