springboot代码混淆(【快学springboot】15、SpringBoot过滤XSS脚本攻击)

本文目录
【快学springboot】15、SpringBoot过滤XSS脚本攻击
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
简而言之,就是作恶用户通过表单提交一些前端代码,如果不做处理的话,这些前端代码将会在展示的时候被浏览器执行。
解决XSS攻击,可以通过后端对输入的数据做过滤或者转义,使XSS攻击代码失效。
对于过滤XSS脚本的代码,通过搜索引擎可以搜索到很多,但似乎都不是那么全面。基本上都是只能过滤querystring(表单类型)类型的入参,而不能过滤json类型的入参。其实,在现在的开发中,更多的是使用json类型做数据交互。下面就直接贴代码了:
这里重写了两个方法:getParameter和getParameterValues,getParameter方法是直接通过request获得querystring类型的入参调用的方法。如果是通过springMVC注解类型来获得参数的话,走的是getParameterValues的方法。大家可以通过打印一个输出来验证一下。
StringEscapeUtils.escapeHtml4这个方法来自Apache的工具类,maven坐标如下:
过滤的代码写完了,下面就是在一个filter中应用该代码。
过滤表单类型的代码已经完成(xssObjectMapper这个是后面过滤json类型才用到的)。下面来实现过滤json类型的代码:
代码如下:
这里是通过修改SpringMVC的json序列化来达到过滤xss的目的的。其实也可以通过第一种方法,重写getInputStream方法来实现,这里我就不做演示了(通过json类型传参会走getInputStream方法,通过重写该方法打印输出可以证明)。
TestController.java
下面通过postman测试下效果:
可以看到,js代码已经经过转义。转义过后的代码,即使前端读取过去了,也不会被浏览器执行的。
springboot知识点整合
在我看来springboot最大好处就是简化配置,以前一个SpringMvc项目需要在xml配置各种东西,现在简化了很多配置,提高了开发效率
一般我的启动类会有 @SpringBootApplication 注解,这是一个组合注解
这里比较重要的是 @EnableAutoConfiguration
@Import是Spring提供的,会注入后面这个类 AutoConfigurationImportSelector
其中方法调用为selectImports-》getAutoConfigurationEntry-》getCandidateConfigurations
往里面看会将 META-INF/spring.factories 文件里需要的类型获取
获取类的方法会在springboot启动的时候AbstractApplicationContext.refresh()调用。
以tomcat为例来看看springboot的启动加载流程
我们一般会运行main方法SpringApplication.run
先看看SpringApplication的构造方法
接下来我们主要看springboot的run方法
我们主要看refreshContext方法,他会调用父类 AbstractApplicationContext 的 refresh 方法,里面会调用子类的 onRefresh 方法,这是一个模板方法模式。接下来看
createWebServer 方法会创建web容器接下来就能看见创建tomcat的代码了
***隐藏网址***
***隐藏网址***
***隐藏网址***

更多文章:
androidapp源码免费下载(如何实现APK的反编译得到APK的源码)
2026年9月22日 18:00
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30







