美文网首页
Java Web使用过滤器防止Xss攻击,解决Xss漏洞

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

作者: __元昊__ | 来源:发表于2019-11-26 08:41 被阅读0次

web.xml添加过滤器

    <!--XssFileter-->
    <filter>
        <filter-name>XssFilter</filter-name>
        <filter-class>com.thinkgem.jeesite.test.response.XssFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>XssFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

简化代码版本

过滤器代码

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;


public class XssFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //使用包装器
        XssFilterWrapper xssFilterWrapper=new XssFilterWrapper((HttpServletRequest) servletRequest);
        filterChain.doFilter(xssFilterWrapper,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

过滤器包装器代码

import org.springframework.web.util.HtmlUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;


public class XssFilterWrapper extends HttpServletRequestWrapper {
    public XssFilterWrapper(HttpServletRequest request) {
        super(request);
    }
    /**
     * 对数组参数进行特殊字符过滤
     */
    @Override
    public String[] getParameterValues(String name) {
//过滤掉不拦截的
        if("articleData.content".equalsIgnoreCase(name)){
            return super.getParameterValues(name);
        }

        String[] values = super.getParameterValues(name);
        if (values == null) {
            return null;
        }
        String[] newValues = new String[values.length];
        for (int i = 0; i < values.length; i++) {
            newValues[i] = HtmlUtils.htmlEscape(values[i]);//spring的HtmlUtils进行转义
        }
        return newValues;
    }
}

总结:

主要是使用Java Web的过滤器,将所有的request请求参数修改(主要是把存在xss风险的标签转义,如:<script></script>),在转义时我没有自己实现替换与转义,是直接使用的spring自带的HtmlUtils类的htmlEscape方法转义的,方便很多

相关文章

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

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

  • 9.2 XSS攻击

    XSS攻击 XSS(Cross Site Script)攻击又叫做跨站脚本攻击。他的原理是用户在使用具有XSS漏洞...

  • 最浅显易懂的Django系列教程(42)-XSS攻击

    XSS攻击 XSS(Cross Site Script)攻击又叫做跨站脚本攻击。他的原理是用户在使用具有XSS漏洞...

  • XSS攻击

    什么是XSS? XSS攻击中文全称“跨站脚本攻击”。XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用...

  • XSS盗取cookie

    XSS定义 XSS是一种比较容易出现的安全漏洞,也是web比较常见的web攻击方式。XSS是指攻击者利用网络没有对...

  • 前端安全

    XSS XSS攻击全称跨站脚本攻击,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提...

  • XSS && CSRF 攻击

    XSS 攻击 XSS (Cross-Site Scripting,跨站脚本攻击)是一种常见的web安全漏洞,它允许...

  • 前端安全以及如何防范

    一、XSS攻击 1.什么是XSS攻击? XSS攻击全称跨站脚本攻击,是一种经常出现在web应用中的计算机安全漏洞,...

  • 常见的WEB攻击

    XSS攻击,CSRF攻击,SQL注入攻击,文件上传漏洞,DDoS攻击,其他攻击手段 1.XSS攻击 XSS(Cro...

  • python的flask解决xss攻击漏洞

    xss漏洞解决 跨站脚本攻击的原理 XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指...

网友评论

      本文标题:Java Web使用过滤器防止Xss攻击,解决Xss漏洞

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