From 53cefb1a2bad44eefcf453060bb6e8a105003169 Mon Sep 17 00:00:00 2001 From: qiankanghui Date: Mon, 24 Aug 2026 17:20:16 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(datasource):=20=E9=9B=86=E6=88=90Dru?= =?UTF-8?q?id=20WallFilter=E5=AE=89=E5=85=A8=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加WallConfig配置类用于SQL防火墙设置 - 禁用select where永真条件检查以支持特定查询需求 - 启用多语句执行功能 - 配置WallFilter并将其添加到Druid数据源过滤器列表 - 添加必要的Druid安全过滤相关依赖包导入 ``` --- .../config/DynamicDataSourceFactory.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/xujie/sys/datasource/config/DynamicDataSourceFactory.java b/src/main/java/com/xujie/sys/datasource/config/DynamicDataSourceFactory.java index 244064fa..9f89a782 100644 --- a/src/main/java/com/xujie/sys/datasource/config/DynamicDataSourceFactory.java +++ b/src/main/java/com/xujie/sys/datasource/config/DynamicDataSourceFactory.java @@ -1,16 +1,21 @@ - + package com.xujie.sys.datasource.config; import com.alibaba.druid.pool.DruidDataSource; import com.xujie.sys.datasource.properties.DataSourceProperties; +import com.alibaba.druid.wall.WallConfig; +import com.alibaba.druid.wall.WallFilter; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + /** * DruidDataSource * - * + * * @since 1.0.0 */ public class DynamicDataSourceFactory { @@ -36,6 +41,18 @@ public class DynamicDataSourceFactory { druidDataSource.setMaxOpenPreparedStatements(properties.getMaxOpenPreparedStatements()); druidDataSource.setSharePreparedStatements(properties.isSharePreparedStatements()); + // 配置WallFilter,允许永真条件 - rqrq + WallConfig wallConfig = new WallConfig(); + wallConfig.setSelectWhereAlwayTrueCheck(false); // 禁用永真条件检查 + wallConfig.setMultiStatementAllow(true); // 允许多语句 + + WallFilter wallFilter = new WallFilter(); + wallFilter.setConfig(wallConfig); + + List filters = new ArrayList<>(); + filters.add(wallFilter); + druidDataSource.setProxyFilters(filters); + try { druidDataSource.setFilters(properties.getFilters()); druidDataSource.init(); @@ -44,4 +61,4 @@ public class DynamicDataSourceFactory { } return druidDataSource; } -} \ No newline at end of file +}