XSS漏洞 解决

    xiaoxiao2021-03-25  66

    转译参数

         将容易引起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;           } 
    转载请注明原文地址: https://ju.6miu.com/read-195458.html

    最新回复(0)