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,"含有非法字符,請檢查!");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/263335.html
標籤:其他
下一篇:MySQL基礎-3 資料完整性
