diff --git a/taier-data-develop/src/main/java/com/dtstack/taier/develop/interceptor/LoginInterceptor.java b/taier-data-develop/src/main/java/com/dtstack/taier/develop/interceptor/LoginInterceptor.java
index 4bcdbc7aad..bae487448c 100644
--- a/taier-data-develop/src/main/java/com/dtstack/taier/develop/interceptor/LoginInterceptor.java
+++ b/taier-data-develop/src/main/java/com/dtstack/taier/develop/interceptor/LoginInterceptor.java
@@ -21,12 +21,14 @@
import com.dtstack.taier.common.constant.CommonConstant;
import com.dtstack.taier.common.exception.ErrorCode;
import com.dtstack.taier.common.exception.TaierDefineException;
+import com.dtstack.taier.develop.service.user.TokenService;
import com.dtstack.taier.develop.utils.CookieUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -34,6 +36,10 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
private static Logger LOGGER = LoggerFactory.getLogger(LoginInterceptor.class);
+
+ @Resource
+ private TokenService tokenService;
+
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String requestURI = request.getRequestURI();
@@ -47,6 +53,8 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons
if (StringUtils.isBlank(token)) {
throw new TaierDefineException(ErrorCode.NOT_LOGIN);
}
+ tokenService.decryption(token);
+
return true;
}
}
diff --git a/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-libra/pom.xml b/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-libra/pom.xml
index 99a4958ac3..db6598708c 100644
--- a/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-libra/pom.xml
+++ b/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-libra/pom.xml
@@ -19,7 +19,7 @@
libra
Libra
- 42.2.2
+ 42.2.25
diff --git a/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-postgresql/pom.xml b/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-postgresql/pom.xml
index 2413ce1efc..fcae1b9b73 100644
--- a/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-postgresql/pom.xml
+++ b/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-postgresql/pom.xml
@@ -18,7 +18,7 @@
postgresql
Postgresql
- 42.2.2
+ 42.2.25
diff --git a/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-rdbms/src/main/java/com/dtstack/taier/datasource/plugin/rdbms/ConnFactory.java b/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-rdbms/src/main/java/com/dtstack/taier/datasource/plugin/rdbms/ConnFactory.java
index 923e8825b9..643c55469e 100644
--- a/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-rdbms/src/main/java/com/dtstack/taier/datasource/plugin/rdbms/ConnFactory.java
+++ b/taier-datasource/taier-datasource-plugin/taier-datasource-plugin-rdbms/src/main/java/com/dtstack/taier/datasource/plugin/rdbms/ConnFactory.java
@@ -40,8 +40,11 @@
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.List;
import java.util.Properties;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
@@ -75,6 +78,14 @@ public class ConnFactory {
private static final String CP_POOL_KEY = "url:%s,username:%s,password:%s,properties:%s";
+ /**
+ * filter with db property
+ */
+ private static final Set DANGEROUS_PARAMS = new HashSet<>(Arrays.asList(
+ "autoDeserialize", "allowLoadLocalInfile", "allowUrlInLocalInfile",
+ "queryInterceptors", "socketFactory", "socketFactoryArg"
+ ));
+
/**
* 线程池 - 用于部分数据源获取连接超时处理
*/
@@ -157,6 +168,17 @@ protected Connection getSimpleConn(ISourceDTO source) throws Exception {
init();
DriverManager.setLoginTimeout(30);
log.info("datasource connected, url : {}, userName : {}, kerberosConfig : {}", rdbmsSourceDTO.getUrl(), rdbmsSourceDTO.getUsername(), rdbmsSourceDTO.getKerberosConfig());
+ // property check
+ String urlLower = rdbmsSourceDTO.getUrl().toLowerCase();
+ for (String dangerousParam : DANGEROUS_PARAMS) {
+ if (urlLower.contains("?" + dangerousParam + "=") ||
+ urlLower.contains("&" + dangerousParam + "=") ||
+ urlLower.contains("?" + dangerousParam + "%3d") ||
+ urlLower.endsWith("?" + dangerousParam)) {
+ throw new SecurityException("Dangerous JDBC parameter detected: " + dangerousParam);
+ }
+ }
+
return DriverManager.getConnection(rdbmsSourceDTO.getUrl(), PropertiesUtil.convertToProp(rdbmsSourceDTO));
}