diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/ColumnValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/ColumnValidator.java index 18a563b47..18d833a95 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/ColumnValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/ColumnValidator.java @@ -29,6 +29,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.core.service.RoutingDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -91,6 +92,9 @@ public class ColumnValidator { public void validateSqlInjection(String schema, String... conditions) { for (String condition : conditions) { + if (StringUtils.isBlank(condition)) { + continue; + } SQLInjectionValidator.validateSQLInput(condition); List operator = new ArrayList<>(Arrays.asList("=", ">", "<", "> =", "< =", "! =", "!=", ">=", "<=")); condition = condition.trim().replace("( ", "(").replace(" )", ")").toLowerCase(); diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionValidator.java index 60ff8e367..ce0c85d78 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/SQLInjectionValidator.java @@ -21,6 +21,7 @@ package org.apache.fineract.infrastructure.security.utils; import java.util.StringTokenizer; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang3.StringUtils; public class SQLInjectionValidator { @@ -33,6 +34,9 @@ public class SQLInjectionValidator { private static final String SQL_PATTERN = "[a-zA-Z_=,\\-'!><.?\"`% ()0-9*\n\r]*"; public static final void validateSQLInput(final String sqlSearch) { + if (StringUtils.isBlank(sqlSearch)) { + return; + } String lowerCaseSQL = sqlSearch.toLowerCase(); for (String ddl : DDL_COMMANDS) { if (lowerCaseSQL.contains(ddl)) { @@ -118,6 +122,9 @@ public class SQLInjectionValidator { } public static final void validateAdhocQuery(final String sqlSearch) { + if (StringUtils.isBlank(sqlSearch)) { + return; + } String lowerCaseSQL = sqlSearch.toLowerCase().trim(); for (String ddl : DDL_COMMANDS) { if (lowerCaseSQL.startsWith(ddl)) {