XssValidator.java 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package com.ruoyi.common.xss;
  2. import com.ruoyi.common.utils.StringUtils;
  3. import javax.validation.ConstraintValidator;
  4. import javax.validation.ConstraintValidatorContext;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7. /**
  8. * 自定义xss校验注解实现
  9. *
  10. * @author ruoyi
  11. */
  12. public class XssValidator implements ConstraintValidator<Xss, String>
  13. {
  14. private static final String HTML_PATTERN = "<(\\S*?)[^>]*>.*?|<.*? />";
  15. @Override
  16. public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext)
  17. {
  18. if (StringUtils.isBlank(value))
  19. {
  20. return true;
  21. }
  22. return !containsHtml(value);
  23. }
  24. public static boolean containsHtml(String value)
  25. {
  26. StringBuilder sHtml = new StringBuilder();
  27. Pattern pattern = Pattern.compile(HTML_PATTERN);
  28. Matcher matcher = pattern.matcher(value);
  29. while (matcher.find())
  30. {
  31. sHtml.append(matcher.group());
  32. }
  33. return pattern.matcher(sHtml).matches();
  34. }
  35. }