Mybatis的sql注入拦截

不知大家是否遇到过这样问题?

当使用mybatis做数据库连接时。如果使用了in(值1,值2,值3...)作数据库查询时,会发生同一条sql语句,同样的参数。在mybatis里查询不了数据,然后把sql语句复制到plsql上查询就有数据。这是为什么呢?

这是因为Mybatis会帮我们进行sql注入拦截,Mybatis如果采用#的形式设置参数,Mybatis会进行sql注入的过滤。如果采用的是$,Mybatis不会进行sql注入过滤,而是直接将参入的内容输出为sql语句。

以下是我的一个小案例:

这样mybatis上就能查到数据了。

PS:sql语句虽然不一样了。不过查询结果一样的。我只是省了一些逻辑。

当然,这里会出现这样的原因也有可能是因为我后台传进来给in(的值)是通过字符串拼接的方式所以才会出现这样的结果。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180328G0BP6O00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券