package cn.com.goldenwater.dcproj.filter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; /** * @author 81229 */ @WebFilter(urlPatterns = "/*") public class XssFilter implements Filter { private static final Logger logger = LoggerFactory.getLogger(XssFilter.class); private static final Set ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>( Arrays.asList("/bis/insp/news"))); FilterConfig filterConfig = null; @Value("${intercept.enable}") private boolean intercept; @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; } @Override public void destroy() { this.filterConfig = null; } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll("[/]+$", ""); boolean allowedPath = ALLOWED_PATHS.contains(path); if (allowedPath) { // logger.debug("这里是不需要处理的url进入的方法"); chain.doFilter(request, response); } else { // logger.debug("这里是需要处理的url进入的方法"); chain.doFilter(new XssHttpServletRequestWrapper(request,response),response); } // if(intercept) { // String server = request.getServletPath(); // server = RequestUtils.cleanScript(server); // System.out.println("server-->"+server); // logger.info("server-->"+server); // if (server.contains("error-333:")||server.contains(".")||server.contains("..")||server.contains("(")||server.contains(" - ") // ||server.contains(")")) { // if(!server.contains(".html") && !server.contains("favicon.ico") && !server.contains("upload")) { // try { // ReturnUtils.responseFail(response, "路径存在异常,请仔细检查", 5555); // return; // } catch (Exception e) { // e.printStackTrace(); // } // } // } // } } }