Mybatis的sql注入拦截

Posted 记录java路上的小问题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis的sql注入拦截相关的知识,希望对你有一定的参考价值。

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

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


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

以下是我的一个小案例:

Mybatis的sql注入拦截


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

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

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

以上是关于Mybatis的sql注入拦截的主要内容,如果未能解决你的问题,请参考以下文章

mybatis 拦截器

超级MyBatis

springboot安全组件总结

springboot安全组件总结

MyBatis怎么防止SQL注入

MyBatis如何防止SQL注入