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

web.xml添加过滤器

xssFilter

com.quickly.exception.common.filter.XssFilter

xssFilter

*

过滤器代码

package com.quickly.exception.common.filter;

import javax.servlet.*;

import javax.servlet.http.HttpServletRequest;

import java.io.IOException;

/**

* 作用:Xss过滤器

* 作者:Tiddler

* 时间:2018/11/11 10:21

* 类名: XssFilter

**/

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() {

}

}

过滤器包装器代码

package com.quickly.exception.common.filter;

import org.springframework.web.util.HtmlUtils;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletRequestWrapper;

/**

* 作用:防Xss过滤器[包装器]

* 作者:Tiddler

* 时间:2018/11/11 10:20

* 类名: XssFilterWrapper

**/

public class XssFilterWrapper extends HttpServletRequestWrapper {

public XssFilterWrapper(HttpServletRequest request) {

super(request);

}

/**

* 对数组参数进行特殊字符过滤

*/

@Override

public String[] getParameterValues(String name) {

if("content".equals(name)){//不想过滤的参数,此处content参数是 富文本内容

return super.getParameterValues(name);

}

String[] values = super.getParameterValues(name);

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风险的标签转义,如:),在转义时我没有自己实现替换与转义,是直接使用的spring自带的HtmlUtils类的htmlEscape方法转义的,方便很多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值