Mysql 为什么此SQL查询会使任何用户在没有有效密码的情况下登录到系统?
我正在学习PHP和SQL注入。在一篇教程中,它说: 如果取消转义,发送到MySQL的查询将是:Mysql 为什么此SQL查询会使任何用户在没有有效密码的情况下登录到系统?,mysql,sql,Mysql,Sql,我正在学习PHP和SQL注入。在一篇教程中,它说: 如果取消转义,发送到MySQL的查询将是: SELECT * FROM users WHERE user='aidan' AND password='' OR ''='' 这将允许任何人在没有有效密码的情况下登录。有人能告诉我为什么上面的查询允许任何人在没有有效密码的情况下登录吗?'='是真的。他们正在做或TRUE。因此,整个条款是正确的。使用事先准备好的陈述。有了准备好的语句,SQL注入(以及需要转义字符串)就成了过去!:-d将您的输入擦洗
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''
这将允许任何人在没有有效密码的情况下登录。有人能告诉我为什么上面的查询允许任何人在没有有效密码的情况下登录吗?
'='
是真的。他们正在做或TRUE
。因此,整个条款是正确的。使用事先准备好的陈述。有了准备好的语句,SQL注入(以及需要转义字符串)就成了过去!:-d将您的输入擦洗为仅安全字符。thx Rocket。此查询是否等于从用户中选择*?是的,因为user='aidan'和password=''或'=''
始终为真(将其视为(user='aidan'和password=''或'=''
)