Browse Source

```

feat(datasource): 集成Druid WallFilter安全配置

- 添加WallConfig配置类用于SQL防火墙设置
- 禁用select where永真条件检查以支持特定查询需求
- 启用多语句执行功能
- 配置WallFilter并将其添加到Druid数据源过滤器列表
- 添加必要的Druid安全过滤相关依赖包导入
```
master
qiankanghui 4 days ago
parent
commit
53cefb1a2b
  1. 23
      src/main/java/com/xujie/sys/datasource/config/DynamicDataSourceFactory.java

23
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<com.alibaba.druid.filter.Filter> 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;
}
}
}
Loading…
Cancel
Save