简介:
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

攻击原理:XSS攻击分为很多,其中一种是,攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入其中的Script代码会被执行,从而达到恶意攻击用户的目的。本文主要介绍的是富文本的script代码注入及解决办法。
在服务器检查敏感的HTML代码,有基于黑名单和基于白名单的两种过滤方式。因为HTML标签种类繁多,基于黑名单的过滤方法考虑的并不全面。而且对伪协议的考虑也不全面等等。。所以这里介绍的是一种基于白名单的过滤方法,使用jsoup处理接收到的HTML,只保留合法的标签及内容。

Jsoup使用步骤:
1.在pom中添加版本控制(或者下载jar包)Download

<dependency>
 <!-- jsoup HTML parser library @ https://jsoup.org/ -->
 <groupId>org.jsoup</groupId>
 <artifactId>jsoup</artifactId>
 <version>1.11.2</version>
</dependency>

2.新建白名单Whitelist——Whitelist类介绍
新建白名单公有6种方法,一个构造方法和5种静态方法。不同的方法所新建的Whitelist拥有不同的初始标签白名单。使用add,remove方法也可以增删白名单内容。需要注意的是preserveRelativeLinks(boolean preserve)这个方法。在选择true,可以使用相对路径后,调用Jsoup.clean()方法时,不能使用两参数的那个方法,必须传baseUrl这个参数,否则还是会删除相对路径。样例代码如下:

String html = "";//接收到的html代码
//防御XSS攻击,安全HTML验证
//可自定义jsoup的Whitelist
Whitelist whitelist = Whitelist.relaxed();
 
//其它白名单设置...
 
//获得安全HTML,消除xss隐患
String safeHtml = Jsoup.clean(html, whitelist);
System.out.println(safeHtml);

转自:https://blog.csdn.net/qq_34964570/article/details/79141654