SpringBoot增加过滤XSS脚本攻击
Bug #133595
[步骤]考试管理-添加考试,考试名称输入<script>alert(1)</script>
[结果]页面弹出alert框。。。存在xss注入
一、XSS攻击是什么
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
简而言之,就是作恶用户通过表单提交一些前端代码,如果不做处理的话,这些前端代码将会在展示的时候被浏览器执行。
二、解决方案
解决XSS攻击,可以通过后端对输入的数据做过滤或者转义,使XSS攻击代码失效。
1、自定义类继承HttpServletRequestWrapper
重写了两个方法:getParameter和getParameterValues,getParameter方法是直接通过request获得querystring类型的入参调用的方法。如果是通过springMVC注解类型来获得参数的话,走的是getParameterValues的方法。
1 | package cn.pconline.pcloud.admin.config; |
StringEscapeUtils.escapeHtml4这个方法来自Apache的工具类:1
2
3
4
5<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.4</version>
</dependency>
2、实现自己的XssFilter
实现过滤表单的代码:
1 | package cn.pconline.pcloud.admin.config; |
实现过滤json类型的代码:
1 | package cn.pconline.pcloud.admin.config; |
XSS注入已修复。。。
参考文档: