# JeecgBoot SQL Injection Vulnerability Summary ## Vulnerability Overview JeecgBoot contains an SQL injection vulnerability. Attackers can bypass the existing SQL injection filtering mechanism by constructing a malicious `keyword` parameter, thereby executing malicious SQL statements. ## Affected Scope - **Affected File**: `jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java` - **Affected Interface**: The `getFilterSql` method in `SysDictServiceImpl.java` (related to dictionary query interfaces). ## Remediation Plan 1. **Enhance Filtering Logic**: Add filtering for dangerous SQL keywords such as `update`, `drop`, `count`, and `truncate` in `SqlInjectionUtil.java`. 2. **Fix Filtering Defects**: In `SysDictServiceImpl.java`, use the `SqlInjectionUtil.specialFilterSql` method to filter the incoming `keyword` parameter, replacing special characters that may trigger injection (such as `*` and `"`). ## Involved Code Blocks **1. New Dangerous Keyword Filtering List (`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. Fixed Filtering Invocation (`SysDictServiceImpl.java`)** ```java // [Security] Perform SQL injection filtering and character escaping on the keyword to prevent SQL injection via the keyword parameter SqlInjectionUtil.specialFilterContentForDictSql(keyword); keyword = keyword.replace("*", "").replace("\"", ""); ```