跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
使用Jsoup可以有效的过滤不安全的代码。Jsoup使用白名单的机制来预防XSS攻击,比如白名单中规定只允许标签的存在,那么其他标签都会被过滤掉。
常见的XSS攻击
比如页面的某个表单允许用户输入任意内容,当某个调皮的用户输入如下内容:
保存后,你会发现页面文字都变成了红色!
或者输入,保存后页面将弹窗10次!
引入Jsoup
使用Maven构建一个简单的Spring Boot项目,在pom中引入:
12345org.jsoup jsoup 1.9.2
JsoupUtil
创建一个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