首页 > 编程知识 正文

mybatis如何防止sql注入,模糊查询呢,mybatis注解模糊查询

时间:2023-05-03 06:04:31 阅读:196586 作者:3487

模糊查询一般这么写

<if test="dto.specialSubjectName !=null and dto.specialSubjectName !=''"> AND a.materials_name LIKE CONCAT('%',#{dto.specialSubjectName},'%')</if>

问题:
当用户输入了% _ 等通配符之后,若后端不进行过滤处理的话,传到数据库就是这个样子的。

AND a.materials_name LIKE '%%%'

这不太好吧。。。。。

解决方法:

换一种写法:instr() 函数
INSTR(STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);
所以 只需要 instr() > 0 即可。

Demo

<if test="dto.specialSubjectName !=null and dto.specialSubjectName !=''"> AND instr(a.materials_name,#{dto.specialSubjectName})>0</if>

SpringCloud的话也可以在网关写一个全局的过滤器,统一检查前端请求过来的参数,进行过滤。也可以。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。