FINERACT-1006 Fixes: NullPointerException at SQLInjectionValidator
This commit is contained in:
committed by
Michael Vorburger ⛑️
parent
44650034b1
commit
37b8219a03
+4
@@ -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<String> operator = new ArrayList<>(Arrays.asList("=", ">", "<", "> =", "< =", "! =", "!=", ">=", "<="));
|
||||
condition = condition.trim().replace("( ", "(").replace(" )", ")").toLowerCase();
|
||||
|
||||
+7
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user