Java代码审计-SQL注入
import java.util.regex.Pattern;
public class SqlInjectionChecker {
// 定义SQL注入攻击的正则表达式模式
private static final Pattern SQL_INJECTION_PATTERN = Pattern.compile(
"(?:')|(?:--)|(?://)|(?:/*)|(?:*/)|(?:%)|(?:select )|(?:insert )|(?:delete )|(?:update )|(?:drop )|(?:alter )|(?:create )",
Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE
);
// 检查字符串是否可能导致SQL注入
public static boolean isSqlInjectionAttack(String input) {
if (input == null) {
return false;
}
// 使用正则表达式匹配
return SQL_INJECTION_PATTERN.matcher(input).find();
}
public static void main(String[] args) {
// 测试字符串
String testString = "'; DROP TABLE users; --";
// 检查是否存在SQL注入攻击
if (isSqlInjectionAttack(testString)) {
System.out.println("潜在的SQL注入攻击:" + testString);
} else {
System.out.println("没有发现SQL注入攻击。");
}
}
}
这段代码定义了一个SqlInjectionChecker
类,其中包含了一个正则表达式,用于识别可能的SQL注入攻击。isSqlInjectionAttack
方法接受一个字符串作为输入,并使用正则表达式进行匹配。如果输入字符串中含有可能导致SQL注入的模式,则返回true
,否则返回false
。在main
方法中,我们测试了一个潜在的SQL注入攻击的字符串,并输出了相应的检测结果。
评论已关闭