java根据白名单过滤html,防止XSS攻击的方法-使用白名单过滤html标签

本文介绍了如何在Java中防止XSS攻击,提供了两种方法:1) 使用jsoup工具类,通过设定白名单过滤HTML标签,如基本过滤、简单文本过滤、宽松过滤等,并展示如何添加自定义标签;2) 使用Apache ORO库的Perl5Util工具类进行正则表达式匹配,删除非特定标签。这两种方法都是为了确保从富文本编辑框保存到数据库的内容安全。
摘要由CSDN通过智能技术生成

问题场景:在网页页面的富文本编辑框添加内容是我们常见的操作,在编辑框中可以给内容填色、变字体等等之后,把内容保存到数据库。但是稍微专业的人会通过firebug/fiddler等工具拦截请求,进行修改数据(添加等标签),提交到数据库保存,之后加载显示数据时浏览器就执行这些标签。所以我们要在后台处理非正常手段输入的标签内容

解决方法一:jsoup工具类

org.jsoup

jsoup

1.8.3

jsoup 使用一个 Whitelist 类用来对 HTML 文档进行过滤,该类提供几个常用方法:

表 1. 常用方法:

none():只允许包含文本信息

basic():允许的标签包括:a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q, small, strike, strong, sub, sup, u, ul, 以及合适的属性

simpleText():只允许 b, em, i, strong, u 这些标签

basicWithImages():在 basic() 的基础上增加了图片

relaxed():这个过滤器允许的标签最多,包括:a, b, blockquote, br, caption, cite, code, col, colgroup, dd, dl, dt, em, h1, h2, h3, h4, h5, h6, i, img, li, ol, p, pre, q, small, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, u, ul

如果这五个过滤器都无法满足你的要求呢,例如你允许用户插入 flash 动画

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值