a9096d98dd8823453d50d46a8cffe6b7d44f04d4.svn-base 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package cn.com.goldenwater.dcproj.filter;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import javax.servlet.Filter;
  6. import javax.servlet.FilterChain;
  7. import javax.servlet.FilterConfig;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11. import javax.servlet.annotation.WebFilter;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import java.io.IOException;
  15. import java.util.Arrays;
  16. import java.util.Collections;
  17. import java.util.HashSet;
  18. import java.util.Set;
  19. /**
  20. * @author 81229
  21. */
  22. @WebFilter(urlPatterns = "/*")
  23. public class XssFilter implements Filter {
  24. private static final Logger logger = LoggerFactory.getLogger(XssFilter.class);
  25. private static final Set<String> ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>(
  26. Arrays.asList("/bis/insp/news")));
  27. FilterConfig filterConfig = null;
  28. @Value("${intercept.enable}")
  29. private boolean intercept;
  30. @Override
  31. public void init(FilterConfig filterConfig) throws ServletException {
  32. this.filterConfig = filterConfig;
  33. }
  34. @Override
  35. public void destroy() {
  36. this.filterConfig = null;
  37. }
  38. @Override
  39. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
  40. FilterChain chain) throws IOException, ServletException {
  41. HttpServletRequest request = (HttpServletRequest) servletRequest;
  42. HttpServletResponse response = (HttpServletResponse) servletResponse;
  43. String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll("[/]+$", "");
  44. boolean allowedPath = ALLOWED_PATHS.contains(path);
  45. if (allowedPath) {
  46. // logger.debug("这里是不需要处理的url进入的方法");
  47. chain.doFilter(request, response);
  48. }
  49. else {
  50. // logger.debug("这里是需要处理的url进入的方法");
  51. chain.doFilter(new XssHttpServletRequestWrapper(request,response),response);
  52. }
  53. // if(intercept) {
  54. // String server = request.getServletPath();
  55. // server = RequestUtils.cleanScript(server);
  56. // System.out.println("server-->"+server);
  57. // logger.info("server-->"+server);
  58. // if (server.contains("error-333:")||server.contains(".")||server.contains("..")||server.contains("(")||server.contains(" - ")
  59. // ||server.contains(")")) {
  60. // if(!server.contains(".html") && !server.contains("favicon.ico") && !server.contains("upload")) {
  61. // try {
  62. // ReturnUtils.responseFail(response, "路径存在异常,请仔细检查", 5555);
  63. // return;
  64. // } catch (Exception e) {
  65. // e.printStackTrace();
  66. // }
  67. // }
  68. // }
  69. // }
  70. }
  71. }