当前位置 博文首页 > iloki的博客:sql防注入

    iloki的博客:sql防注入

    作者:[db:作者] 时间:2021-08-25 12:50

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