# JeecgBoot SQL注入漏洞总结 ## 漏洞概述 JeecgBoot 存在 SQL 注入漏洞。攻击者可通过构造特殊的 `keyword` 参数,绕过原有的 SQL 注入过滤机制,从而执行恶意 SQL 语句。 ## 影响范围 - **受影响文件**:`jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java` - **受影响接口**:`SysDictServiceImpl.java` 中的 `getFilterSql` 方法(涉及字典查询接口)。 ## 修复方案 1. **完善过滤逻辑**:在 `SqlInjectionUtil.java` 中增加对 `update`、`drop`、`count`、`truncate` 等危险 SQL 关键字的过滤。 2. **修复过滤缺陷**:在 `SysDictServiceImpl.java` 中,使用 `SqlInjectionUtil.specialFilterSql` 方法对传入的 `keyword` 进行过滤,替换掉可能引发注入的特殊字符(如 `*`、`"`)。 ## 涉及代码块 **1. 新增的危险关键字过滤列表 (`SqlInjectionUtil.java`)** ```java private static String specialDictSqlXssStr = "exec|execute|performance_schema|information_schema|extractvalue|updatexml|geohash|gtid_subset|gtid_subtract|insert|select|delete|update|drop|count|chr|mod|master|truncate|char|declare|;|+|-%20|or|!|substring|substring"; ``` **2. 修复后的过滤调用 (`SysDictServiceImpl.java`)** ```java // 【安全】对keyword进行SQL注入过滤和字符转义,防止通过keyword参数进行SQL注入 SqlInjectionUtil.specialFilterContentForDictSql(keyword); keyword = keyword.replace("*", "").replace("\"", ""); ```