老师,关于' or 1=1 or 1=' 的疑问。

老师,关于' or 1=1 or 1=' 的疑问。

查询条件拼接后成了
' ' or 1=1 or 1=' ' 
1、为啥写成1=1,布尔判断的话不应该是1==1  这样写吗?
2、前面 ' ' or 1=1   已经确定恒为true了,再输入后面的  or 1= '  是为什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,1. sql语句中的where不需要使用==号,直接使用的等号(=)即可。如:id=1,就是查询id等于1的数据。

2. 在此案例中将数据进行处理预处理,将其转换为一个字符串。如下图所示:查询employee表中dname值为' or 1=1 or 1='字符串的数据。

http://img1.sycdn.imooc.com//climg/5fbdfdbf0992d1f208920160.jpg

3. 根据上述描述,'' or 1=1 or 1=''是一个字符串,并不会判断是否为true值。

注:在SQL语句中or是或的意思(||)如:where id=1 or name ='admin'(查询id等于1或name等于admin的数据)

  • 谁叫我这么坏 提问者 #1
    老师,or 前面的 单引号与 dname=' 凑成了条件语句,中间的1=1 凑成了一个条件语句,后面的1=' 与末尾的单引号凑成了条件语句。三个语句由两个or连接,所以只要满足其中一个语句,就会返回对应的数据。但是由于中间的1=1恒成立,所以数据库就会直接返回所有的数据,是这样的吗?
    2020-11-25 18:11:47
  • 同学你好,如果未经过预处理,同学理解是正确的,但这条语句属于sql注入,可能会导致数据泄露的问题。所以在开发过程中,不建议是写这样的where条件。祝学习愉快!
    2020-11-25 18:58:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师