java驗證是否包含特殊字符-java工具類

簡單效驗

1.javax.validation包下 的

轉載自

2.apache工具包common-lang中的工具類,其中之一就是StringEscapeUtil

在這裏插入圖片描述

複雜效驗MatchTest工具類

package com.hwqh.huawenstockuser.utils.string;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.regex.Pattern;

/**
 * @program: hxzq-cloud-parent
 * @ClassName: MatchTest
 * @version: 1.0
 * @description:
 * @author: zhaonian
 * @create: 2020-06-09 14:59
 **/
public class MatchTest {


    public static void main(String[] args) {
        String s = "1234567890-=!@#$%^^&*()_~!@#$%^^&*()_QWERTYUIOP{}{|":LKGFSAZXCVBNM<>?"}"?>?>?>?>?>?>?<><<><><>?>?>?>>>>>>>>>>>>>>>>>>>>>L:::::::::::::::::::::::::::::::::::::::::::::::::::::::::""::';\n" +
                "\n" +
                "';';[qw87287636425326473247256~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";

        System.out.println(containsAll(s));

    }


    public static boolean containsAll(String str) {
        if (str.contains("*")) {
            return true;
        }
        if (str.contains("'")) {
            return true;
        }
        if (str.contains("~")) {
            return true;
        }
        if (str.contains(">")) {
            return true;
        }
        if (str.contains("*")) {
            return true;
        }
        if (str.contains("<")) {
            return true;
        }
        if (str.contains("&")) {
            return true;
        }
        if (str.contains("%")) {
            return true;
        }
        if (str.contains("$")) {
            return true;
        }
        if (str.contains("@")) {
            return true;
        }
        if (str.contains("=")) {
            return true;
        }
        if (str.contains("or")) {
            return true;
        }
        return false;
    }

    public static String replaceXSS(String value) {
        if (value != null) {
            try {
                value = value.replace("+", "%2B");   //'+' replace to '%2B'
                value = URLDecoder.decode(value, "utf-8");
            } catch (UnsupportedEncodingException e) {
            } catch (IllegalArgumentException e) {
            }

            // Avoid null characters
            value = value.replaceAll("\0", "");

            // Avoid anything between script tags
            Pattern scriptPattern = Pattern.compile("<script>(.*?)</script>", Pattern.CASE_INSENSITIVE);
            value = scriptPattern.matcher(value).replaceAll("");

            // Avoid anything in a src='...' type of e­xpression
            scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
            value = scriptPattern.matcher(value).replaceAll("");

            scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
            value = scriptPattern.matcher(value).replaceAll("");

            // Remove any lonesome </script> tag
            scriptPattern = Pattern.compile("</script>", Pattern.CASE_INSENSITIVE);
            value = scriptPattern.matcher(value).replaceAll("");

            // Remove any lonesome <script ...> tag
            scriptPattern = Pattern.compile("<script(.*?)>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
            value = scriptPattern.matcher(value).replaceAll("");

            // Avoid eval(...) e­xpressions
            scriptPattern = Pattern.compile("eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
            value = scriptPattern.matcher(value).replaceAll("");

            // Avoid e­xpression(...) e­xpressions
            scriptPattern = Pattern.compile("e­xpression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
            value = scriptPattern.matcher(value).replaceAll("");

            // Avoid javascript:... e­xpressions
            scriptPattern = Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE);
            value = scriptPattern.matcher(value).replaceAll("");
            // Avoid alert:... e­xpressions
            scriptPattern = Pattern.compile("alert", Pattern.CASE_INSENSITIVE);
            value = scriptPattern.matcher(value).replaceAll("");
            // Avoid οnlοad= e­xpressions
            scriptPattern = Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
            value = scriptPattern.matcher(value).replaceAll("");
            scriptPattern = Pattern.compile("vbscript[\r\n| | ]*:[\r\n| | ]*", Pattern.CASE_INSENSITIVE);
            value = scriptPattern.matcher(value).replaceAll("");
        }
        return value;
    }

    /**
     * 過濾特殊字符
     */
    public static String filter(String value) {
        if (value == null) {
            return null;
        }
        StringBuffer result = new StringBuffer(value.length());
        for (int i = 0; i < value.length(); ++i) {
            switch (value.charAt(i)) {
                case '<':
                    result.append("<");
                    break;
                case '>':
                    result.append(">");
                    break;
                case '"':
                    result.append("\"");
                    break;
                case '\'':
                    result.append("'");
                    break;
                case '%':
                    result.append("%");
                    break;
                case ';':
                    result.append(";");
                    break;
                case '(':
                    result.append("(");
                    break;
                case ')':
                    result.append(")");
                    break;
                case '&':
                    result.append("&");
                    break;
                case '+':
                    result.append("+");
                    break;
                default:
                    result.append(value.charAt(i));
                    break;
            }
        }
        return result.toString();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章