sql in 不能超过_原创 | Oracle注入简单挖掘—范围查询in

3fb4c8ff39da3f60ab6943aef2cd2162.png点击“关注”了解更多信息6a246a8a662d3f42a2e1ee33cc2521fa.png

关于范围查询in

在SQL语言中,in主要用于范围精准查询。例如下⾯的SQL语句,主要是查询年龄为18,28,38的⼈:
select * from student where age in(18,28,38);
既然跟数据库交互有关,⾃然⽽然就会想到SQL注入的防护问题,第⼀时间想到的方案就是预编译了。但是采⽤预编译执⾏SQL语句传⼊的参数不能作为SQL语句的⼀部分。那么范围查询in的场景更多的可能会直接使⽤拼接的⽅式进⾏交互。那么很可能存在SQL注⼊风险。
以mybati框架为例,直接使用#注解的话,范围查询的结果会与理想的结果不一致:
<select id="searchUser" parameterType=“String” resultType=“com.tk.codeAudit.sqlinject.mybatis.User">    select * from user where id in (#{_parameter})select>

本来查询id范围在1和2的用户,只返回了一条记录:

版权声明:本文为weixin_39646658原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。