龙空技术网

WEB安全--sql注入简释

可知否 21

前言:

眼前大家对“sql中的逻辑运算符有哪些”可能比较着重,姐妹们都需要剖析一些“sql中的逻辑运算符有哪些”的相关知识。那么小编同时在网上收集了一些关于“sql中的逻辑运算符有哪些””的相关资讯,希望我们能喜欢,你们快快来学习一下吧!

SQL 注入和 XSS 一样,都是违背了数据和代码分离原则导致的攻击方式。

攻击的前提是:后端只用了简单的拼接 SQL 的方式去查询数据。

后端拼接出来的sql语句如下:select * from user where username = 'admin' or 1=1 and password = 'xxx'

在SQL中,逻辑运算符的优先级是 NOT > AND > OR。因此,这个查询实际上是这样被解析的:

select * from user where (username = 'admin') or (1=1 and password = 'xxx')

由于 1=1 总是为真(true),所以 1=1 and password = 'xxx' 这个条件实际上变成了 true and password = 'xxx',即只要 password = 'xxx' 为真,整个条件就为真。

但是,由于 or 运算符的存在,整个查询的逻辑变得复杂了。如果 username = 'admin' 为真,那么不管 password = 'xxx' 是否为真,整个查询都会返回 username 为 'admin' 的所有记录。如果 username = 'admin' 为假,那么只有当 password = 'xxx' 为真时,查询才会返回记录。

标签: #sql中的逻辑运算符有哪些