XSS漏洞 解决

转译参数


     将容易引起xss漏洞的半角字符直接替换成全角字符 

    public String xssEncode(String s)  
    {  
        if (s == null || s.isEmpty())  
        {  
            return s;  
        }  
          
        String result = stripXSS(s);  
        if (null != result)  
        {  
            result = escape(result);  
        }  
          
        return result;  
    }  
      
    private String stripXSS(String value)   
    {  
                if (value != null)   
                {  
                    // NOTE: It's highly recommended to use the ESAPI library and uncomment the following line to  
                    // avoid encoded attacks.  
                    // value = ESAPI.encoder().canonicalize(value);  
                    // Avoid null characters  
                    value = value.replaceAll("", "");  
                    // 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 expression  
                    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(...) expressions  
                    scriptPattern = Pattern.compile("eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);  
                    value = scriptPattern.matcher(value).replaceAll("");  
                    // Avoid expression(...) expressions  
                    scriptPattern = Pattern.compile("expression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);  
                    value = scriptPattern.matcher(value).replaceAll("");  
                    // Avoid javascript:... expressions  
                    scriptPattern = Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE);  
                    value = scriptPattern.matcher(value).replaceAll("");  
                    // Avoid vbscript:... expressions  
                    scriptPattern = Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE);  
                    value = scriptPattern.matcher(value).replaceAll("");  
                    // Avoid οnlοad= expressions  
                    scriptPattern = Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);  
                    value = scriptPattern.matcher(value).replaceAll("");  
                      
                    scriptPattern = Pattern.compile("<iframe>(.*?)</iframe>", Pattern.CASE_INSENSITIVE);  
                    value = scriptPattern.matcher(value).replaceAll("");  
                      
                    scriptPattern = Pattern.compile("</iframe>", Pattern.CASE_INSENSITIVE);  
                    value = scriptPattern.matcher(value).replaceAll("");  
                    // Remove any lonesome <script ...> tag  
                    scriptPattern = Pattern.compile("<iframe(.*?)>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);  
                    value = scriptPattern.matcher(value).replaceAll("");  
                }  
                return value;  
        } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值