XSS
反射型XSS
下面是一个简单的 Spring Boot Web 应用,其中包含了一个含有 XSS 漏洞的请求处理器。
在这个应用中,我们通过 GET 请求方式访问 /xss 接口,输入参数会被直接输出到 HTML 页面中。如果输入参数中包含了恶意脚本,那么这些脚本就会被执行,从而导致 XSS 攻击。
package com.example.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class XssController {
@GetMapping("/xss")
public String XssTest(@RequestParam String name) {
return "<h1>Hello, " + name + "!</h1>";
}
}触发漏洞结果

存储型XSS
数据库插入一条XSS记录

Thymeleaf 是一款常用的模板引擎,它可以将 HTML 页面与 Java 代码进行结合,实现动态渲染 HTML 页面的功能。在 Spring Boot 项目中使用 Thymeleaf,需要在项目的 pom.xml 文件中添加以下依赖:
该依赖会自动引入 Thymeleaf 模板引擎及其依赖的其他库,因此不需要额外添加其他依赖。在添加了该依赖后,Spring Boot 会自动配置 Thymeleaf 模板引擎,无需手动进行配置。
Spring Boot配置Thymeleaf的三个属性:
spring.thymeleaf.cache=false:设置Thymeleaf的缓存是否开启,此处为关闭缓存;spring.thymeleaf.prefix=classpath:/templates/:设置Thymeleaf模板所在的目录,此处为/templates;spring.thymeleaf.suffix=.html:设置Thymeleaf模板的后缀名,此处为.html。
th:utext会将变量的值直接输出到HTML中,而不是对其进行转义处理。

dom xss

查看页面源代码,可以看到插入到JS里面

修复代码
HtmlUtils类
使用Spring框架提供的HtmlUtils类对用户输入进行转义
查看页面源代码,可以看到已经转义

escapeHtml4类
HTML编码
thymeleaf模板过滤
最后更新于
这有帮助吗?