最近在使用druid连接池,同时也配置了web和spring的关联监控,检测到select * from tables param like #{param1} “%”的语句被拦截了。做个笔记。
解决方法有两种:
一、 select * from tables param like concat(${param1},”%”)。
二、传入 参数的时候动态拼接 param1=param1+”%”;
select * from tables param like #{param1}。
Mybatis3 防止SQL注入
{xxx},使用的是PreparedStatement,会有类型转换,所以比较安全;
${xxx},使用字符串拼接,可以SQL注入;
like查询不小心会有漏动,正确写法如下:
Mysql: select * from tables where param like concat(‘%’, #{param1}, ‘%’)
Oracle: select * from t_user where param like ‘%’ || #{param1} || ‘%’
SQLServer: select * from t_user where param like ‘%’ + #{param1} + ‘%’
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-20 12:33:53