如何通过Jsoup在Spring Boot 2.x中有效防止XSS攻击?

2026-05-26 07:451阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计723个文字,预计阅读时间需要3分钟。

如何通过Jsoup在Spring Boot 2.x中有效防止XSS攻击?

后端应用通常接收各种信息参数,例如评论、回复等文本内容。除了特定场景下,可以接受富文本标签和属性(如b、ul、li、h1、h2、h3等)外,需要过滤掉危险的字符和标签,防止xs攻击。

后端应用经常接收各种信息参数,例如评论,回复等文本内容。除了一些场景下面,可以特定接受的富文本标签和属性之外(如:b,ul,li,h1, h2, h3...),需要过滤掉危险的字符和标签,防止xss攻击。

一、什么是XSS?

看完这个,应该有一个大致的概念。

XSS攻击常识及常见的XSS攻击脚本汇总
XSS过滤速查表

二、准则

  • 永远不要相信用户的输入和请求的参数(包括文字、上传等一切内容)
  • 参考第1条

三、实现做法

结合具体业务场景,对相应内容进行过滤,这里使用Jsoup。

jsoup是一款Java的HTML解析器。Jsoup提供的Whitelist(白名单)对文本内容进行过滤,过滤掉字符、属性,但是又保留必要的富文本格式。
如,白名单中允许b标签存在(并且不允许b标签带有其他属性)那么在一段Html内容,在过滤之后,会变成:

过滤前:

如何通过Jsoup在Spring Boot 2.x中有效防止XSS攻击?

<b style="xxx" onclick="<script>alert(0);</script>">abc</>

过滤后:

<b>abc</b>

Whitelist主要方法说明

方法 说明 addAttributes(String tag, String... attributes) 给标签添加属性。Tag是属性名,keys对应的是一个个属性值。例如:addAttributes("a", "href", "class")表示:给标签a添加href和class属性,即允许标签a包含href和class属性。如果想给每一个标签添加一组属性,使用:all。例如:addAttributes(":all", "class").即给每个标签添加class属性。 addEnforcedAttribute(String tag, String attribute, String value) 给标签添加强制性属性,如果标签已经存在了要添加的属性,则覆盖原有值。tag:标签;key:标签的键;value:标签的键对应的值。例如:addEnforcedAttribute("a", "rel", "nofollow")表示 addProtocols(String tag, String key, String...protocols) 给URL属性添加协议。例如:addProtocols("a", "href", "ftp", "www.baidu.com/a\" onclick=\"alert(1);\"></a><script>alert(0);</script><b style=\"xxx\" onclick=\"<script>alert(0);</script>\">abc</>"; System.out.println(HtmlFilter.create().clean(text)); } }

XssFilter过滤器

import org.apache.commons.lang3.StringUtils; import javax.servlet.*; import javax.servlet.localhost:8080/demo/th/xss?abc=%3Ca%20href=%22www.baidu.com/a%22%20onclick=%22alert(1);%22%3Eabc%3C/a%3E%3Cscript%3Ealert(0);%3C/script%3E&abc=%3Cb%20style=%22xxx%22%20onclick=%22%3Cscript%3Ealert(0);%3C/script%3E%22%3Eabc%3C/%3E

到此这篇关于springboot2.x使用Jsoup防XSS攻击的实现的文章就介绍到这了,更多相关springboot2.x防XSS攻击内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

本文共计723个文字,预计阅读时间需要3分钟。

如何通过Jsoup在Spring Boot 2.x中有效防止XSS攻击?

后端应用通常接收各种信息参数,例如评论、回复等文本内容。除了特定场景下,可以接受富文本标签和属性(如b、ul、li、h1、h2、h3等)外,需要过滤掉危险的字符和标签,防止xs攻击。

后端应用经常接收各种信息参数,例如评论,回复等文本内容。除了一些场景下面,可以特定接受的富文本标签和属性之外(如:b,ul,li,h1, h2, h3...),需要过滤掉危险的字符和标签,防止xss攻击。

一、什么是XSS?

看完这个,应该有一个大致的概念。

XSS攻击常识及常见的XSS攻击脚本汇总
XSS过滤速查表

二、准则

  • 永远不要相信用户的输入和请求的参数(包括文字、上传等一切内容)
  • 参考第1条

三、实现做法

结合具体业务场景,对相应内容进行过滤,这里使用Jsoup。

jsoup是一款Java的HTML解析器。Jsoup提供的Whitelist(白名单)对文本内容进行过滤,过滤掉字符、属性,但是又保留必要的富文本格式。
如,白名单中允许b标签存在(并且不允许b标签带有其他属性)那么在一段Html内容,在过滤之后,会变成:

过滤前:

如何通过Jsoup在Spring Boot 2.x中有效防止XSS攻击?

<b style="xxx" onclick="<script>alert(0);</script>">abc</>

过滤后:

<b>abc</b>

Whitelist主要方法说明

方法 说明 addAttributes(String tag, String... attributes) 给标签添加属性。Tag是属性名,keys对应的是一个个属性值。例如:addAttributes("a", "href", "class")表示:给标签a添加href和class属性,即允许标签a包含href和class属性。如果想给每一个标签添加一组属性,使用:all。例如:addAttributes(":all", "class").即给每个标签添加class属性。 addEnforcedAttribute(String tag, String attribute, String value) 给标签添加强制性属性,如果标签已经存在了要添加的属性,则覆盖原有值。tag:标签;key:标签的键;value:标签的键对应的值。例如:addEnforcedAttribute("a", "rel", "nofollow")表示 addProtocols(String tag, String key, String...protocols) 给URL属性添加协议。例如:addProtocols("a", "href", "ftp", "www.baidu.com/a\" onclick=\"alert(1);\"></a><script>alert(0);</script><b style=\"xxx\" onclick=\"<script>alert(0);</script>\">abc</>"; System.out.println(HtmlFilter.create().clean(text)); } }

XssFilter过滤器

import org.apache.commons.lang3.StringUtils; import javax.servlet.*; import javax.servlet.localhost:8080/demo/th/xss?abc=%3Ca%20href=%22www.baidu.com/a%22%20onclick=%22alert(1);%22%3Eabc%3C/a%3E%3Cscript%3Ealert(0);%3C/script%3E&abc=%3Cb%20style=%22xxx%22%20onclick=%22%3Cscript%3Ealert(0);%3C/script%3E%22%3Eabc%3C/%3E

到此这篇关于springboot2.x使用Jsoup防XSS攻击的实现的文章就介绍到这了,更多相关springboot2.x防XSS攻击内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!