美文网首页
web项目脚本过滤--XSS过滤器

web项目脚本过滤--XSS过滤器

作者: 皮多堡 | 来源:发表于2017-12-21 17:46 被阅读0次

XSS脚本过滤

脚本攻击经常是项目测试人员或者“不法分子”闲着没事干,想办法让你的程序不正常,最近项目中刚好用到所以就贴出来做个笔记。

1.思路

我们可以通过servlet规范中的过滤器,对每一次请求进行过滤 --> 将请求参数获取到对脚本数据进行转义处理后再进行持久化操作,比如< script > < /script>中的'<' ,'>'号。

2.配置过滤器

在项目中web.xml中添加:

  <filter>  
    <filter-name>XSSEscape</filter-name>  
    <filter-class>com.hp.up.front.xss.XSSFilter</filter-class>
</filter>  
<filter-mapping>  
    <filter-name>XSSEscape</filter-name>  
    <url-pattern>/*</url-pattern>  
    <dispatcher>REQUEST</dispatcher>  
</filter-mapping> 

其中com.hp.up.front.xss.XSSFilter就是过滤器路径

3.编写过滤器

自然是实现javax.servlet.Filter 重写doFilter了:

import java.io.IOException;
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;
public class XSSFilter implements Filter {  
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void destroy() {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
        chain.doFilter(new XSSRequestWrapper((HttpServletRequest) request), response);
    }
}

doFilter方法中传入XSSRequestWrapper对象,该类集成自HttpServletRequestWrapper,其实就是对HttpServletRequest中获取参数的方法的重写,从而实现对参数进行过滤、操作



import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

import org.apache.commons.lang.StringEscapeUtils;

public class XSSRequestWrapper extends HttpServletRequestWrapper{

public XSSRequestWrapper(HttpServletRequest request) {  
    super(request);  
}  

@Override  
public String getHeader(String name) {  
    return StringEscapeUtils.escapeHtml(super.getHeader(name));  
}  

@Override  
public String getQueryString() {  
    return StringEscapeUtils.escapeHtml(super.getQueryString());  
}  

@Override  
public String getParameter(String name) {  
    return StringEscapeUtils.escapeHtml(super.getParameter(name));  
}  

@Override  
public String[] getParameterValues(String name) {  
    String[] values = super.getParameterValues(name);  
    if(values != null) {  
        int length = values.length;  
        String[] escapseValues = new String[length];  
        for(int i = 0; i < length; i++){  
            escapseValues[i] = htmlEncode(values[i]);  
        }  
        return escapseValues;  
    }
    return super.getParameterValues(name);  
}

private static String htmlEncode(String source) {
    if (source == null) {
        return "";
    }
    String html = "";
    StringBuffer buffer = new StringBuffer();
    for (int i = 0; i < source.length(); i++) {
        char c = source.charAt(i);
        switch (c) {
        case '<':
            buffer.append("&lt;");
            break;
        case '>':
            buffer.append("&gt;");
            break;
        case '&':
            buffer.append("&amp;");
            break;
        case '"':
            buffer.append("&quot;");
            break;
        case 10:
        case 13:
            break;
        default:
            buffer.append(c);
        }
    }
    html = buffer.toString();
    return html;
 }  
}

最终发现每次提交数据拦截器都会对数据中的脚本进行转义后再存到数据库中:


相关文章

  • web项目脚本过滤--XSS过滤器

    XSS脚本过滤 脚本攻击经常是项目测试人员或者“不法分子”闲着没事干,想办法让你的程序不正常,最近项目中刚好用到所...

  • Java Web 过滤器

    过滤器的工作原理 过滤器的生命周期 过滤器链 Web项目中多个过滤器实现,多个过滤器对应同一个路近执行顺序如何? ...

  • Jfinal框架如何处理请求

    首先,在项目的web.xml文件中配置过滤器,过滤器类指定com.jfinal.core.JFinalFilter...

  • Java Web使用过滤器防止Xss攻击,解决Xss漏洞

    web.xml添加过滤器 简化代码版本 过滤器代码 过滤器包装器代码 总结: 主要是使用Java Web的过滤器,...

  • Javaweb之Filter案例练习-项目全局编码过滤器

    Filter全局编码过滤器 这篇来做一个Filter在全局编码过滤器练习,这篇新建一个web项目来做练习。 web...

  • 使用 Servlet 的 Filter 设置字符集

    过滤器 在 web.xml 中配置过滤器

  • 2018-08-23

    Java Web开发技术应用——过滤器 什么是过滤器:过滤源 ——> 过滤规则 ——> ...

  • 2019-08-22/XSS过滤器

    做后端的同学都知道,XSS过滤器,防sql注入过滤器等是常用的 。关于什么是XSS攻击,网上的说法很多,自己百度一...

  • 2019-03-01 过滤器

    1 web过滤器是什么? 过滤源 → 过滤规则 → 过滤结果过滤器不处理请求 2 过滤器的概念 3 过滤器的工...

  • Java Web 之过滤器

    前言 学一学Java Web 三大组件之一过滤器。 Filter过滤器 Filter过滤器用来对Web资源进行一些...

网友评论

      本文标题:web项目脚本过滤--XSS过滤器

      本文链接:https://www.haomeiwen.com/subject/wynawxtx.html