You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by ca...@apache.org on 2022/11/15 06:14:51 UTC

[incubator-linkis] branch dev-1.3.1 updated: [ISSUE-3795] Handle mysql connection parameters (#3826)

This is an automated email from the ASF dual-hosted git repository.

casion pushed a commit to branch dev-1.3.1
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git


The following commit(s) were added to refs/heads/dev-1.3.1 by this push:
     new b9a13c52e [ISSUE-3795] Handle mysql connection parameters (#3826)
b9a13c52e is described below

commit b9a13c52e1fc6f370727d6ab0e69f289dd603211
Author: aiceflower <ki...@sina.com>
AuthorDate: Tue Nov 15 14:14:45 2022 +0800

    [ISSUE-3795] Handle mysql connection parameters (#3826)
---
 .../query/service/mysql/SqlConnection.java         | 39 ++++++++++++++++++++--
 1 file changed, 36 insertions(+), 3 deletions(-)

diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java
index ddf2f5baf..9f3aa0f8c 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/jdbc/src/main/java/org/apache/linkis/metadata/query/service/mysql/SqlConnection.java
@@ -20,12 +20,12 @@ package org.apache.linkis.metadata.query.service.mysql;
 import org.apache.linkis.common.conf.CommonVars;
 import org.apache.linkis.metadata.query.common.domain.MetaColumnInfo;
 
+import org.springframework.util.CollectionUtils;
+
 import java.io.Closeable;
 import java.io.IOException;
 import java.sql.*;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import org.slf4j.Logger;
@@ -59,6 +59,8 @@ public class SqlConnection implements Closeable {
       String database,
       Map<String, Object> extraParams)
       throws ClassNotFoundException, SQLException {
+    // Handle mysql security vulnerabilities
+    validateParams(extraParams);
     connectMessage = new ConnectMessage(host, port, username, password, extraParams);
     conn = getDBConnection(connectMessage, database);
     // Try to create statement
@@ -66,6 +68,37 @@ public class SqlConnection implements Closeable {
     statement.close();
   }
 
+  /**
+   * Handle mysql security vulnerabilities
+   *
+   * @param extraParams
+   */
+  private void validateParams(Map<String, Object> extraParams) {
+    if (CollectionUtils.isEmpty(extraParams)) {
+      return;
+    }
+
+    // Delete suspected vulnerability parameters
+    Iterator<Map.Entry<String, Object>> iterator = extraParams.entrySet().iterator();
+    while (iterator.hasNext()) {
+      Map.Entry<String, Object> entry = iterator.next();
+      String key = entry.getKey();
+      if ("allowLoadLocalInfile".equalsIgnoreCase(key)
+          || "autoDeserialize".equalsIgnoreCase(key)
+          || "allowLocalInfile".equalsIgnoreCase(key)
+          || "allowUrlInLocalInfile".equalsIgnoreCase(key)) {
+        extraParams.remove(key);
+        iterator.remove();
+      }
+    }
+
+    // Set all vulnerability parameters to false
+    extraParams.put("allowLoadLocalInfile", "false");
+    extraParams.put("autoDeserialize", "false");
+    extraParams.put("allowLocalInfile", "false");
+    extraParams.put("allowUrlInLocalInfile", "false");
+  }
+
   public List<String> getAllDatabases() throws SQLException {
     List<String> dataBaseName = new ArrayList<>();
     Statement stmt = null;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org