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的用户,只返回了一条记录:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值