sql防注入


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,"含有非法字符,请检查!");
    }
}

你可能感兴趣的:(工具类,java,sql)