import java.util.regex.Pattern;
/**
* 过滤sql注入工具类
*/
public class SqlCheckUtil {
/**
* 过滤sql注入关键字
*
* @param paramStr
* @return true代表合法, false 代表不合法参数
* \\b 表示 限定单词边界 比如 select 不通过 1select则是可以的
*/
private static String reg = "(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|"
+ "(\\b(select|update|union|and|or|delete|insert|truncate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute)\\b)";
private static Pattern sqlPattern = Pattern.compile(reg, Pattern.CASE_INSENSITIVE);
public static boolean checkSql(String paramStr) {
if (paramStr == null || StringUtils.isEmpty(paramStr)) return false;
if (sqlPattern.matcher(paramStr).find()) {
return false;
}
return true;
}
public static String getValidSql(String paramStr) throws Exception {
if(checkSql(paramStr)) return paramStr;
throw new Exception(ExceptionEnumCommon.EXCEPTION_005,"含有非法字符,请检查!");
}
}
sql防注入
最新推荐文章于 2024-03-01 22:28:49 发布