3

我正在学习 PHP 和 MySQL。我从 PHP 手册页中遇到了一个 SQL 注入示例,其中最终注入的 SQL 查询是:

SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

我对OR ''=''在这种情况下的含义感到困惑?我知道该语句的作用,但我只是想了解如何在另一种情况下使用它,以及它的''=''含义。

谢谢!

4

3 回答 3

4
  1. ''=''总是评估为true
  2. 因此,整个条件password='' OR ''=''也评估为true

→ 密码不会被检查,您可以在没有正确密码的情况下获得用户访问权限。

于 2013-05-05T21:51:21.017 回答
3

如果您正在接受SELECT * FROM users WHERE user='aidan' AND password='$password'用户格式的查询,则可以填写' OR ''='密码,这将关闭密码字段,然后允许 SQL 查询检查是否''=''会返回true并导致他们在不输入有效密码的情况下获得访问权限。

于 2013-05-05T21:53:11.827 回答
1

只是表示为真的表达式,不太可能用在其他场景

于 2013-05-05T21:53:18.207 回答