mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	1. Xss 的完成
2. 完善 README 文档
This commit is contained in:
		@@ -1,47 +0,0 @@
 | 
			
		||||
package com.ruoyi.framework.config;
 | 
			
		||||
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import javax.servlet.DispatcherType;
 | 
			
		||||
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
 | 
			
		||||
import org.springframework.context.annotation.Bean;
 | 
			
		||||
import org.springframework.context.annotation.Configuration;
 | 
			
		||||
import com.ruoyi.common.filter.RepeatableFilter;
 | 
			
		||||
import com.ruoyi.common.filter.XssFilter;
 | 
			
		||||
import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Filter配置
 | 
			
		||||
 *
 | 
			
		||||
 * @author ruoyi
 | 
			
		||||
 */
 | 
			
		||||
@Configuration
 | 
			
		||||
public class FilterConfig {
 | 
			
		||||
    @Value("${xss.enabled}")
 | 
			
		||||
    private String enabled;
 | 
			
		||||
 | 
			
		||||
    @Value("${xss.excludes}")
 | 
			
		||||
    private String excludes;
 | 
			
		||||
 | 
			
		||||
    @Value("${xss.urlPatterns}")
 | 
			
		||||
    private String urlPatterns;
 | 
			
		||||
 | 
			
		||||
    @SuppressWarnings({"rawtypes", "unchecked"})
 | 
			
		||||
    @Bean
 | 
			
		||||
    public FilterRegistrationBean xssFilterRegistration() {
 | 
			
		||||
        FilterRegistrationBean registration = new FilterRegistrationBean();
 | 
			
		||||
        registration.setDispatcherTypes(DispatcherType.REQUEST);
 | 
			
		||||
        registration.setFilter(new XssFilter());
 | 
			
		||||
        registration.addUrlPatterns(StringUtils.split(urlPatterns, ","));
 | 
			
		||||
        registration.setName("xssFilter");
 | 
			
		||||
        registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
 | 
			
		||||
        Map<String, String> initParameters = new HashMap<String, String>();
 | 
			
		||||
        initParameters.put("excludes", excludes);
 | 
			
		||||
        initParameters.put("enabled", enabled);
 | 
			
		||||
        registration.setInitParameters(initParameters);
 | 
			
		||||
        return registration;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,97 +0,0 @@
 | 
			
		||||
package com.ruoyi.common.filter;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.regex.Matcher;
 | 
			
		||||
import java.util.regex.Pattern;
 | 
			
		||||
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.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 防止XSS攻击的过滤器
 | 
			
		||||
 * 
 | 
			
		||||
 * @author ruoyi
 | 
			
		||||
 */
 | 
			
		||||
public class XssFilter implements Filter
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * 排除链接
 | 
			
		||||
     */
 | 
			
		||||
    public List<String> excludes = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * xss过滤开关
 | 
			
		||||
     */
 | 
			
		||||
    public boolean enabled = false;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void init(FilterConfig filterConfig) throws ServletException
 | 
			
		||||
    {
 | 
			
		||||
        String tempExcludes = filterConfig.getInitParameter("excludes");
 | 
			
		||||
        String tempEnabled = filterConfig.getInitParameter("enabled");
 | 
			
		||||
        if (StringUtils.isNotEmpty(tempExcludes))
 | 
			
		||||
        {
 | 
			
		||||
            String[] url = tempExcludes.split(",");
 | 
			
		||||
            for (int i = 0; url != null && i < url.length; i++)
 | 
			
		||||
            {
 | 
			
		||||
                excludes.add(url[i]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (StringUtils.isNotEmpty(tempEnabled))
 | 
			
		||||
        {
 | 
			
		||||
            enabled = Boolean.valueOf(tempEnabled);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
 | 
			
		||||
            throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        HttpServletRequest req = (HttpServletRequest) request;
 | 
			
		||||
        HttpServletResponse resp = (HttpServletResponse) response;
 | 
			
		||||
        if (handleExcludeURL(req, resp))
 | 
			
		||||
        {
 | 
			
		||||
            chain.doFilter(request, response);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request);
 | 
			
		||||
        chain.doFilter(xssRequest, response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
    {
 | 
			
		||||
        if (!enabled)
 | 
			
		||||
        {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        if (excludes == null || excludes.isEmpty())
 | 
			
		||||
        {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        String url = request.getServletPath();
 | 
			
		||||
        for (String pattern : excludes)
 | 
			
		||||
        {
 | 
			
		||||
            Pattern p = Pattern.compile("^" + pattern);
 | 
			
		||||
            Matcher m = p.matcher(url);
 | 
			
		||||
            if (m.find())
 | 
			
		||||
            {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void destroy()
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user