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.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
|
import org.apache.fineract.infrastructure.core.service.RoutingDataSource;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -91,6 +92,9 @@ public class ColumnValidator {
|
|||||||
|
|
||||||
public void validateSqlInjection(String schema, String... conditions) {
|
public void validateSqlInjection(String schema, String... conditions) {
|
||||||
for (String condition : conditions) {
|
for (String condition : conditions) {
|
||||||
|
if (StringUtils.isBlank(condition)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
SQLInjectionValidator.validateSQLInput(condition);
|
SQLInjectionValidator.validateSQLInput(condition);
|
||||||
List<String> operator = new ArrayList<>(Arrays.asList("=", ">", "<", "> =", "< =", "! =", "!=", ">=", "<="));
|
List<String> operator = new ArrayList<>(Arrays.asList("=", ">", "<", "> =", "< =", "! =", "!=", ">=", "<="));
|
||||||
condition = condition.trim().replace("( ", "(").replace(" )", ")").toLowerCase();
|
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.StringTokenizer;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public class SQLInjectionValidator {
|
public class SQLInjectionValidator {
|
||||||
|
|
||||||
@@ -33,6 +34,9 @@ public class SQLInjectionValidator {
|
|||||||
private static final String SQL_PATTERN = "[a-zA-Z_=,\\-'!><.?\"`% ()0-9*\n\r]*";
|
private static final String SQL_PATTERN = "[a-zA-Z_=,\\-'!><.?\"`% ()0-9*\n\r]*";
|
||||||
|
|
||||||
public static final void validateSQLInput(final String sqlSearch) {
|
public static final void validateSQLInput(final String sqlSearch) {
|
||||||
|
if (StringUtils.isBlank(sqlSearch)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
String lowerCaseSQL = sqlSearch.toLowerCase();
|
String lowerCaseSQL = sqlSearch.toLowerCase();
|
||||||
for (String ddl : DDL_COMMANDS) {
|
for (String ddl : DDL_COMMANDS) {
|
||||||
if (lowerCaseSQL.contains(ddl)) {
|
if (lowerCaseSQL.contains(ddl)) {
|
||||||
@@ -118,6 +122,9 @@ public class SQLInjectionValidator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static final void validateAdhocQuery(final String sqlSearch) {
|
public static final void validateAdhocQuery(final String sqlSearch) {
|
||||||
|
if (StringUtils.isBlank(sqlSearch)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
String lowerCaseSQL = sqlSearch.toLowerCase().trim();
|
String lowerCaseSQL = sqlSearch.toLowerCase().trim();
|
||||||
for (String ddl : DDL_COMMANDS) {
|
for (String ddl : DDL_COMMANDS) {
|
||||||
if (lowerCaseSQL.startsWith(ddl)) {
|
if (lowerCaseSQL.startsWith(ddl)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user