2cbf87feb5a0e5c4bfd7ac19fdbaeed9cd4c2cef.svn-base 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package org.jeecg.modules.system.util;
  2. import org.springframework.web.util.HtmlUtils;
  3. import java.util.regex.Pattern;
  4. /**
  5. * @Description: 工具类XSSUtils,现在的做法是替换成空字符,CSDN的是进行转义,比如文字开头的"<"转成&lt;
  6. * @author: lsq
  7. * @date: 2021年07月26日 19:13
  8. */
  9. public class XSSUtils {
  10. public static String striptXSS(String value) {
  11. if (value != null) {
  12. value = value.replaceAll(" ", "");
  13. Pattern scriptPattern = Pattern.compile("<script>(.*?)</script>", Pattern.CASE_INSENSITIVE);
  14. value = scriptPattern.matcher(value).replaceAll("");
  15. scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  16. value = scriptPattern.matcher(value).replaceAll("");
  17. scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  18. value = scriptPattern.matcher(value).replaceAll("");
  19. scriptPattern = Pattern.compile("</script>", Pattern.CASE_INSENSITIVE);
  20. value = scriptPattern.matcher(value).replaceAll("");
  21. scriptPattern = Pattern.compile("<script(.*?)>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  22. value = scriptPattern.matcher(value).replaceAll("");
  23. scriptPattern = Pattern.compile("eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  24. value = scriptPattern.matcher(value).replaceAll("");
  25. scriptPattern = Pattern.compile("e­xpression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  26. value = scriptPattern.matcher(value).replaceAll("");
  27. scriptPattern = Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE);
  28. value = scriptPattern.matcher(value).replaceAll("");
  29. scriptPattern = Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE);
  30. value = scriptPattern.matcher(value).replaceAll("");
  31. scriptPattern = Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  32. value = scriptPattern.matcher(value).replaceAll("");
  33. }
  34. return HtmlUtils.htmlEscape(value);
  35. }
  36. public static void main(String[] args) {
  37. String s = striptXSS("<img src=x onload=alert(111).*?><script></script>javascript:eval()\\\\.");
  38. System.err.println("s======>" + s);
  39. }
  40. }