关于sql的一些理解
sql注入那些事
关于为什么 select * from user where ‘a1’ = ‘e1’ = ‘1’; 和 select * from user where ‘1’=’a1’ = ‘e1’;查询出来sql的值不一样
首先这里说一点,sql字符串具有跟php字符串类似的性质,比如说,如果是以非数字开头的
例如:
'qdadada' 'adad'
这些字符串的逻辑值为0
如果是以数字开头的
例如:
'1aaaa' '2bbb'
这些字符串的逻辑值为1
'a1' = 'e1' = '1'
和 '1' = 'a1'= 'e1'
的区别
- 执行顺序不同,造成执行结果截然不同。
'a1'= 'e1' = '1'
- 首先
'a1' = 'e1'
因为是字符串比较,所以返回false - 表达式就变成了
false = '1'
'1'
的逻辑值为 1
所以false = '1'
返回了false
'1' = 'a1'= 'e1'
- 首先
'1' = 'e1'
是字符串比较 返回 fasle - 所以表达式变成了
false = 'e1'
'e1'
的逻辑值为0
所以最终为 false = ‘e1’ 返回了true
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Fpoint!