java 富文本 xss_Jsoup 防止富文本 XSS 攻击

服务器处理富文本编辑器提交的内容时, 因排版的需求不能对 HTML 标签进行转义, 但为了防止 XSS 攻击, 又必须过滤掉其中的 JS 代码, 在 Java 中使用 Jsoup 正好可以满足此要求

实现原理

Jsoup 使用标签 ** 白名单 ** 的机制用来进行防止 XSS 攻击, 假设白名单中只允许 p 标签存在, 此时在一段 HTML 代码中,** 只能存在 p 标签 **, 其他标签将会被清除只保留被标签所包裹的内容, 具体详情可查看参考资料

项目依赖

jsoup-1.9.2

org.jsoup

jsoup

1.9.2

代码示例

创建进行测试的 HTML 代码

String testHtml = "

div 标签的内容

p 标签的内容

";

创建一个白名单对象

Whitelist whitelist = new Whitelist();

添加允许使用的标签, 此时只允许 p 标签存在

whitelist.addTags("p");

对测试代码进行过滤, 过滤规则就是创建的白名单

String result1 = Jsoup.clean(testHtml, whitelist);

System.out.println(result1);// 输出: div 标签的内容 < p>p 标签的内容

此时我们发现 div 标签已经被过滤掉了, 但是 p 标签中的属性也同时也被过滤掉了, 因为白名单只允许了 p 标签, 但是并未对属性加入白名单, 此时将 p 标签中的 class 属性加入白名单中, 再进行一次过滤

whitelist.addAttri

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值