Administrator
发布于 2025-01-09 / 1 阅读
0
0

分页查询sql注入

1、sql注入问题

在编写分页查询接口时,无论是使用MyBatis或者是MyBatis-Plus,查询条件一般为:

QueryWrapper<MyEntity> queryWrapper = newQueryWrapper<>(); 
queryWrapper.like("field_name", param);

此时,如果param的值为%或者_,那么MyBatis或者是MyBatis-Plus在拼接sql时
参数会变为:

'%%%'或者'%_%'。此时进行查询肯定是能查到数据的,而且匹配所有条件。
解决:
1、常规方法:#{}

编写相应的sql替代queryWrapper,使用#{}能预编译参数,可以解决sql注入问题。

2、提前处理参数

private String replaceStr(String str){
if (str.contains("%") || str.contains("_")) {
// 针对传入参数包含“_”和“%"进行处理
str = str.replace("\\", "\\\\").replace("%", "\\%").replace("_", "\\_");
}
return str;
}



评论