|
|
@@ -1,6 +1,9 @@
|
|
|
package com.uas.kanban.support;
|
|
|
|
|
|
+import com.alibaba.druid.filter.Filter;
|
|
|
import com.alibaba.druid.pool.DruidDataSource;
|
|
|
+import com.alibaba.druid.wall.WallConfig;
|
|
|
+import com.alibaba.druid.wall.WallFilter;
|
|
|
import com.uas.kanban.annotation.NotEmpty;
|
|
|
import com.uas.kanban.base.BaseDao;
|
|
|
import com.uas.kanban.model.DataSource;
|
|
|
@@ -9,9 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.sql.SQLException;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 管理数据源
|
|
|
@@ -143,8 +144,33 @@ public class DataSourceManager {
|
|
|
ds.setMaxPoolPreparedStatementPerConnectionSize(20);
|
|
|
ds.setTimeBetweenLogStatsMillis(60000);
|
|
|
// 配置监控统计拦截的filters, 监控统计:"stat",防SQL注入:"wall",组合使用: "stat,wall"
|
|
|
- ds.setFilters("stat,slf4j,wall");
|
|
|
+ ds.setFilters("stat,slf4j");
|
|
|
ds.setConnectionProperties("druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000");
|
|
|
+
|
|
|
+ // 设置拦截过滤器,只允许读操作
|
|
|
+ List<Filter> filters = new ArrayList<>();
|
|
|
+ WallFilter wallFilter = new WallFilter();
|
|
|
+ WallConfig config = new WallConfig();
|
|
|
+ config.setSelectIntoAllow(false);
|
|
|
+ config.setDeleteAllow(false);
|
|
|
+ config.setUpdateAllow(false);
|
|
|
+ config.setInsertAllow(false);
|
|
|
+ config.setReplaceAllow(false);
|
|
|
+ config.setMergeAllow(false);
|
|
|
+ config.setCallAllow(false);
|
|
|
+ config.setSetAllow(false);
|
|
|
+ config.setTruncateAllow(false);
|
|
|
+ config.setCreateTableAllow(false);
|
|
|
+ config.setAlterTableAllow(false);
|
|
|
+ config.setDropTableAllow(false);
|
|
|
+ config.setUseAllow(false);
|
|
|
+ config.setDescribeAllow(false);
|
|
|
+ config.setShowAllow(false);
|
|
|
+ config.setCommitAllow(false);
|
|
|
+ config.setRollbackAllow(false);
|
|
|
+ wallFilter.setConfig(config);
|
|
|
+ filters.add(wallFilter);
|
|
|
+ ds.setProxyFilters(filters);
|
|
|
return ds;
|
|
|
}
|
|
|
}
|