Skip to content

Commit 0fc374d

Browse files
committed
修复 sql注入漏洞 #4393
1 parent f94c5e1 commit 0fc374d

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import cn.hutool.crypto.SecureUtil;
44
import lombok.extern.slf4j.Slf4j;
55
import org.jeecg.common.exception.JeecgBootException;
6+
67
import javax.servlet.http.HttpServletRequest;
78
import java.lang.reflect.Field;
89
import java.util.Set;
@@ -21,7 +22,7 @@ public class SqlInjectionUtil {
2122
* (上线修改值 20200501,同步修改前端的盐值)
2223
*/
2324
private final static String TABLE_DICT_SIGN_SALT = "20200501";
24-
private final static String XSS_STR = "and |extractvalue|updatexml|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+|user()";
25+
private final static String XSS_STR = "and |extractvalue|updatexml|geohash|gtid_subset|gtid_subtract|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+|user()";
2526

2627
/**
2728
* 正则 user() 匹配更严谨
@@ -33,7 +34,7 @@ public class SqlInjectionUtil {
3334
/**
3435
* sql注释的正则
3536
*/
36-
private final static Pattern SQL_ANNOTATION = Pattern.compile("/\\*.*\\*/");
37+
private final static Pattern SQL_ANNOTATION = Pattern.compile("/\\*[\\s\\S]*\\*/");
3738

3839
/**
3940
* 针对表字典进行额外的sign签名校验(增加安全机制)
@@ -167,7 +168,7 @@ public static void filterContent(String[] values, String customXssString) {
167168
*/
168169
//@Deprecated
169170
public static void specialFilterContentForDictSql(String value) {
170-
String specialXssStr = " exec |extractvalue|updatexml| insert | select | delete | update | drop | count | chr | mid | master | truncate | char | declare |;|+|user()";
171+
String specialXssStr = " exec |extractvalue|updatexml|geohash|gtid_subset|gtid_subtract| insert | select | delete | update | drop | count | chr | mid | master | truncate | char | declare |;|+|user()";
171172
String[] xssArr = specialXssStr.split("\\|");
172173
if (value == null || "".equals(value)) {
173174
return;
@@ -201,7 +202,7 @@ public static void specialFilterContentForDictSql(String value) {
201202
*/
202203
//@Deprecated
203204
public static void specialFilterContentForOnlineReport(String value) {
204-
String specialXssStr = " exec |extractvalue|updatexml| insert | delete | update | drop | chr | mid | master | truncate | char | declare |user()";
205+
String specialXssStr = " exec |extractvalue|updatexml|geohash|gtid_subset|gtid_subtract| insert | delete | update | drop | chr | mid | master | truncate | char | declare |user()";
205206
String[] xssArr = specialXssStr.split("\\|");
206207
if (value == null || "".equals(value)) {
207208
return;

jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/security/DictQueryBlackListHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.jeecg.modules.system.security;
22

3-
import org.jeecg.common.constant.CommonConstant;
43
import org.jeecg.common.constant.SymbolConstant;
54
import org.jeecg.common.util.oConvertUtils;
65
import org.jeecg.common.util.security.AbstractQueryBlackListHandler;
@@ -52,7 +51,9 @@ protected List<QueryTable> getQueryTableInfo(String dictCodeString) {
5251
*/
5352
private String getTableName(String str) {
5453
String[] arr = str.split("\\s+(?i)where\\s+");
55-
return arr[0];
54+
// sys_user , (sys_user), sys_user%20, %60sys_user%60 issues/4393
55+
String reg = "\\s+|\\(|\\)|`";
56+
return arr[0].replaceAll(reg, "");
5657
}
5758

5859
}

0 commit comments

Comments
 (0)