package utils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* Filters used to make SQL injection more difficult to perform
*
* This file is part of the Security Shepherd Project.
*
*
The Security Shepherd project is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software Foundation, either
* version 3 of the License, or (at your option) any later version.
*
*
The Security Shepherd project is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
*
You should have received a copy of the GNU General Public License along with the Security
* Shepherd project. If not, see .
*
* @author Mark Denihan
*/
public class SqlFilter {
private static final Logger log = LogManager.getLogger(SqlFilter.class);
public static String levelFour(String input) {
input = input.toLowerCase();
while (input.contains("'")) {
log.debug("Scrubbing ' from input");
input = input.replaceAll("'", "");
}
return input;
}
public static String levelOne(String input) {
log.debug("Filtering input at SQL levelOne");
return input.replaceFirst("'", "");
}
public static String levelThree(String input) {
log.debug("Filtering input at SQL levelThree");
input = input.toLowerCase();
input =
input
.replaceAll("|", "")
.replaceAll("&", "")
.replaceAll("!", "")
.replaceAll("-", "")
.replaceAll(";", "");
while (input.contains("or")
|| input.contains("true")
|| input.contains("false")
|| input.contains("and")
|| input.contains("is")) {
input =
input
.replaceAll("or", "")
.replaceAll("true", "")
.replaceAll("and", "")
.replaceAll("false", "")
.replaceAll("is", "");
}
return input;
}
public static String levelTwo(String input) {
log.debug("Filtering input at SQL levelTwo");
input = input.replaceAll("OR", "").replaceAll("or", "");
input = input.replaceAll("OR", "").replaceAll("or", "");
input = input.replaceAll("|", "").replaceAll("&", "");
input = input.replaceAll("true", "").replaceAll("TRUE", "");
return input;
}
}