博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xssProject在java web项目中应用
阅读量:7123 次
发布时间:2019-06-28

本文共 2450 字,大约阅读时间需要 8 分钟。

 

注:转载http://337027773.blog.163.com/blog/static/54376980201451133534157/

1.项目引入xssProtect-0.1.jar、antlr-3.0.1.jar、antlr-runtime-3.0.1.jar包 
2.封装request 
 
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper{    HttpServletRequest orgRequest = null;    public XssHttpServletRequestWrapper(HttpServletRequest request)    {        super(request);        orgRequest = request;    }    /**     * 覆盖getParameter方法,将参数名和参数值都做xss过滤。
* 如果需要获得原始的值,则通过super.getParameterValues(name)来获取
* getParameterNames,getParameterValues和getParameterMap也可能需要覆盖 */ @Override public String getParameter(String name) { String value = super.getParameter(xssEncode(name)); if (value != null) { value = xssEncode(value); } return value; } /** * 覆盖getHeader方法,将参数名和参数值都做xss过滤。
* 如果需要获得原始的值,则通过super.getHeaders(name)来获取
getHeaderNames 也可能需要覆盖 */ @Override public String getHeader(String name) { String value = super.getHeader(xssEncode(name)); if (value != null) { value = xssEncode(value); } return value; } /** * 将容易引起xss漏洞的半角字符直接替换成全角字符 * * @param s * @return */ private static String xssEncode(String s) { if (s == null || s.isEmpty()) { return s; } StringReader reader = new StringReader( s ); StringWriter writer = new StringWriter(); try { HTMLParser.process( reader, writer, new XSSFilter(), true ); return writer.toString(); } catch (NullPointerException e) { return s; } catch(Exception ex) { ex.printStackTrace(); } return null; } /** * 获取最原始的request * * @return */ public HttpServletRequest getOrgRequest() { return orgRequest; } /** * 获取最原始的request的静态方法 * * @return */ public static HttpServletRequest getOrgRequest(HttpServletRequest req) { if (req instanceof XssHttpServletRequestWrapper) { return ((XssHttpServletRequestWrapper) req).getOrgRequest(); } return req; }
 

3.创建过滤器  

XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request);  chain.doFilter(xssRequest, response);
4.在web.xml中配置过滤器 
https://xssprotect.googlecode.com/svn/trunk/
你可能感兴趣的文章
前端常见兼容问题系列5:¥符号在部分Android APP的WebView中不见了
查看>>
基于Reactjs实现webapp(加精)
查看>>
超强、超详细Redis数据库入门教程
查看>>
《C++语言基础》实践项目——多重继承
查看>>
京颐集团上云之路:如何助力中小型医疗行业信息化与全面上云?
查看>>
设计可以多选的按钮ChooseManyButton
查看>>
NSURLErrorDomain Code=-999
查看>>
SQL模板资源管理器,你用了吗?
查看>>
ORA-00600: internal error code, arguments: [17281], [1001], [0x1FF863EE8], [], [], [], [], []
查看>>
吃鸡数据不完全分析
查看>>
APK体积优化的一些总结
查看>>
介绍一款Java的方法入参校验工具
查看>>
不借助第三个变量交换 a,b两个值
查看>>
[深入SystemUI]-了解recents的启动流程(一)
查看>>
Android线程池的原理以及项目中实践
查看>>
声明 NSString 类型的属性,到底用 strong 还是 copy ?
查看>>
我的友情链接
查看>>
设置接口跨域调用方法
查看>>
python selenium系列(八)元素定位进阶之分层定位
查看>>
MySQL多表连接优化一例
查看>>