问题

在做网站的时候,经常会提供用户评论的功能。有些不怀好意的用户,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,此时需要清理该HTML,以避免跨站脚本cross-site scripting攻击(XSS)。

方法

使用jsoup HTML Cleaner 方法进行清除,但需要指定一个可配置的 Whitelist

String unsafe =
"<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());
// now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>

说明

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。所以我们经常只让用户输入纯文本的内容,但这样用户体验就比较差了。

一个更好的解决方法就是使用一个富文本编辑器WYSIWYG如CKEditor 和 TinyMCE。这些可以输出HTML并能够让用户可视化编辑。虽然他们可以在客户端进行校验,但是这样还不够安全,需要在服务器端进行校验并清除有害的HTML代码,这样才能确保输入到你网站的HTML是安全的。否则,攻击者能够绕过客户端的Javascript验证,并注入不安全的HMTL直接进入您的网站。

jsoup的whitelist清理器能够在服务器端对用户输入的HTML进行过滤,只输出一些安全的标签和属性。

jsoup提供了一系列的Whitelist基本配置,能够满足大多数要求;但如有必要,也可以进行修改,不过要小心。

这个cleaner非常好用不仅可以避免XSS攻击,还可以限制用户可以输入的标签范围。

最新文章

  1. Eclipse debug高级技巧(转)
  2. [课程设计]Scrum 1. 9 多鱼点餐系统开发进度(最后页面完善&amp;修复BUG&amp;用户测试反馈)
  3. Xcode与OX 版本对照表
  4. MS10048依旧是Windows 2003 x86 的杀器
  5. Android 开源项目分类汇总(转)
  6. bootstrap插件之Carousel
  7. oracle触发器学习
  8. 关于ubuntu 系统
  9. 设置不输入密码ssh登录
  10. bash,bg,bind,break,builtin,caller,compgen, complete,compopt,continue,declare,dirs,disown,enable,eval,exec,expo
  11. 01.阿里云SDK调用,获取ESC主机详细信息
  12. 前端基于react,后端基于.net core2.0的开发之路(番外篇) 后端使用T4模板,生成某些类
  13. .net 笔试面试总结(1)
  14. 针对json的查询--alibaba的开源项目jsonq
  15. .NET Core 使用 EF 出错的解决方法
  16. Mysql设置允许外网访问(图文)
  17. 项目启动时 Exception in thread &quot;HouseKeeper&quot; java.lang.NullPointerException
  18. io操作的要素
  19. google fcm 推送的流程
  20. HTTP协议1:工作原理

热门文章

  1. C语言:sizeof判断数据类型长度
  2. HTML元素属性及意义
  3. CentOS更换网易yum源
  4. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-热部署项目到tomcat中,但是数据库配置文件错误,中途停止部署,导致执行shutdow.sh报错异常: Could not contact localhost:8005. Tomcat may not be running error while shutting down】
  5. 微信小程序云开发-数据库-获取用户添加的数据到数据库
  6. 【并查集模板】并查集模板 luogu-3367
  7. dotnet部署出现Failed to load the dll from [ ... hostfxr.dll], HRESULT: 0x80070057
  8. Jmeter RMI 反序列化命令执行漏洞(CVE-2018-1297)
  9. Jenkins插件安装失败
  10. CF201C Fragile Bridges TJ