zoukankan      html  css  js  c++  java
  • XSS工具类,清除参数中的特殊字符

    package com.xss;
    
    import java.util.regex.Pattern;
    
    
    /**
     * XssUtil 工具类
     */
    public class XssUtil {
    
        static Pattern scriptPattern = Pattern.compile("<script>(.*?)</script>", Pattern.CASE_INSENSITIVE);
    
    
        static Pattern scriptPatternSrc = Pattern.compile("src="(.*?)",Pattern.CASE_INSENSITIVE );
    
        static Pattern scriptPatternHref = Pattern.compile("href="(.*?)",Pattern.CASE_INSENSITIVE );
    
        static Pattern singleScriptPattern = scriptPattern = Pattern.compile("</script>", Pattern.CASE_INSENSITIVE);
        static Pattern singleBeginScriptPattern = Pattern.compile("<script(.*?)>",
                Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
    
        static Pattern singleBeginIframePattern = Pattern.compile("<iframe(.*?)>",
                Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
    
        static Pattern criptPattern = Pattern.compile("eval\((.*?)\)",
                Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
        static Pattern expressionPattern = Pattern.compile("expression\((.*?)\)",
                Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
    
        static Pattern javascriptPattern = Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE);
        //alert
        static Pattern alertPattern = Pattern.compile("(.*?)alert(.*?)", Pattern.CASE_INSENSITIVE);
    
        static Pattern importPattern = Pattern.compile("(.*?)import(.*?)", Pattern.CASE_INSENSITIVE);
    
        static Pattern functionPattern = Pattern.compile("(.*?)function(.*?)", Pattern.CASE_INSENSITIVE);
    
        static Pattern vbscriptPattern = Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE);
    
        static Pattern onScriptPattern = Pattern.compile("on(.*?)=['|"](.*?)['|"]",
                Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
    
    
    
        /**
         * 清理xss特殊字符
         * @param value 过滤的字符串
         * @return: String
         */
        public static String cleanXSS(String value) {
            if (value != null) {
                // 避免script 标签
                value = scriptPattern.matcher(value).replaceAll("");
    
                // 避免src形式的表达式
                value = scriptPatternSrc.matcher(value).replaceAll("");
    
                // 避免href形式的表达式
                value = scriptPatternHref.matcher(value).replaceAll("");
                // 删除单个的 </script> 标签
                value = singleScriptPattern.matcher(value).replaceAll("");
    
                // 删除单个的<script ...> 标签
                value = singleBeginScriptPattern.matcher(value).replaceAll("");
                // 删除单个的<iframe ...> 标签
                value = singleBeginIframePattern.matcher(value).replaceAll("");
                // 避免 eval(...) 形式表达式
                value = criptPattern.matcher(value).replaceAll("");
    
                // 避免 e­xpression(...) 表达式
                value = expressionPattern.matcher(value).replaceAll("");
    
                // 避免 javascript: 表达式
                value = javascriptPattern.matcher(value).replaceAll("");
    
                value = alertPattern.matcher(value).replaceAll("");
    
                value = importPattern.matcher(value).replaceAll("");
    
                value = functionPattern.matcher(value).replaceAll("");
    
                // 避免 vbscript: 表达式
                value = vbscriptPattern.matcher(value).replaceAll("");
                // 避免 onXX= 表达式
                value = onScriptPattern.matcher(value).replaceAll("");
    
            }
            return value;
        }
    
    
    }
  • 相关阅读:
    Node Sass could not find a binding for your current environment : Node.js 8.x -SpiritMark
    SpringBoot从入门到精通教程(八)
    注解 @CrossOrigin
    出现VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。 未能将管道连接到虚拟机: 所有的管道范例都在使用中。
    说一下 JSP 的 4 种作用域?
    jsp有哪些内置对象?作用分别是什么?
    MVC的各个部分都有那些技术来实现?如何实现?
    你所了解的的软件测试类型都有哪些,简单介绍一下。
    你的测试职业发展目标是什么?
    您认为做好测试用例设计工作的关键是什么?
  • 原文地址:https://www.cnblogs.com/pxblog/p/13360929.html
Copyright © 2011-2022 走看看