什么是XSS攻击
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
使用Jsoup可以有效的过滤不安全的代码。Jsoup使用白名单的机制来预防XSS攻击,比如白名单中规定只允许标签的存在,那么其他标签都会被过滤掉。
Jsoup的使用
- 引入pom.xml
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.9.2</version>
</dependency>
- 创建一个JsoupUtil工具类
import java.io.FileNotFoundException;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.safety.Whitelist;
/**
* Xss过滤工具
*
*/
public class JsoupUtil {
private static final Whitelist whitelist = Whitelist.basicWithImages();
/*
* 配置过滤化参数,不对代码进行格式化
*/
private static final Document.OutputSettings outputSettings = new Document.OutputSettings().prettyPrint(false);
static {
/*
* 富文本编辑时一些样式是使用style来进行实现的 比如红色字体 style="color:red;" 所以需要给所有标签添加style属性
*/
whitelist.addAttributes(":all", "style");
}
public static String clean(String content) {
return Jsoup.clean(content, "", whitelist, outputSettings);
}
}
这里采用的白名单为basicWithImages,Jsoup内置了几种常见的白名单供我们选择,如下表所示:
| 白名单对象 | 标签 | 说明 |
|---|

本文介绍了XSS攻击的概念,并详细展示了如何利用Jsoup在SpringBoot2应用中防御XSS攻击。通过引入Jsoup,设置白名单策略,以及创建XssHttpServletRequestWrapper和XssFilter,确保HTTP请求参数的安全。
1573

被折叠的 条评论
为什么被折叠?



