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

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

String unsafe = "<p><a href='http://baidu.com/' οnclick='stealCookies()'>Link</a></p>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());
// now: <p><a href="http://baidu.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攻击,还可以限制用户可以输入的标签范围。

Jsoup消除不受信任的HTML(用于防止XSS的攻击)相关推荐

  1. 如何在Mac电脑上添加或删除受信任的电话号码?

    受信任的电话号码用于在其他设备或浏览器登陆时验证您的身份,获取验证码在另一设备上登陆.那我们如何在Mac电脑上添加或删除受信任的电话号码呢?小编给大家带来了详细的图文教程,需要的朋友欢迎参考操作! 具 ...

  2. mac 打不开 不受信任_管理不受信任的外键

    mac 打不开 不受信任 介绍 (Introduction) Intended audience 目标听众 This article is intended for application devel ...

  3. 错误:非法证书不受信任_企业零信任:完善访问控制

    错误:非法证书不受信任 This blog was co-written by Max Saltonstall and Jen Person 该博客由 Max Saltonstall 和Jen Per ...

  4. iOS开发证书/发布证书不受信任

    某天清理过钥匙串中的证书后,再双击安装证书时便提示证书不受信任,情况如下图: 查遍了钥匙串的各种设置,依然没有解决,都做好要重装系统的准备了,不愿那么麻烦装系统的我,在网上看到一篇证书无效的文章,抱着 ...

  5. 添加自签发的 SSL 证书为受信任的根证书

    通过 SSL 加密的 HTTPS 连接访问网站时,需要安装并配置一个受信任的 CA 根证书(Trusted CA Root Certificate).平常访问一些加密网站之所以不需要自己安装证书,是因 ...

  6. 教你秒建受信任的本地 SSL 证书,彻底解决开发测试环境的无效证书警告烦恼!...

    您是否厌倦了在本地开发项目中使用不受信任的 SSL 证书?维护自己的证书颁发机构(CA)是一个痛苦的事情,这过程中需要用到神秘的程序和命令.在本指南中,我将向您展示一种在没有 CA 的情况下在本地开发 ...

  7. iOS推送证书显示“此证书不受信任”

    配置推送证书的时候,一打开就变成不受信任,搜了很多解决版本. 第一种说是双击证书,打开之后在信任里面选择"始终信任" 这个选择信任之后,证书变成这样了,显示"此证书已标记 ...

  8. 请求更改配置清除计算机的tpm,受信任的执行环境 ACPI 配置文件

    受信任的执行环境 ACPI 配置文件 10/11/2018 本文内容 许可: Microsoft 同意向您授予对合理且非歧视的条款的免费许可,这些条款仅用于做出.使用.出售.销售.导入或分发此规范的任 ...

  9. 更新受信任电话号码验证服务器出错,Apple ID 绑定的受信任电话号码怎样更改?...

    原标题:Apple ID 绑定的受信任电话号码怎样更改? 当您成为 iPhone.iPad 等苹果设备的用户之后,需要确保在这些设备上登录的 Apple ID 是您本人的,且账户密码只有您自己知晓.还 ...

最新文章

  1. 逻辑心理测试题:三囚分汤
  2. crontab 案例
  3. 13SpringMvc_限定某个业务控制方法,只允许GET或POST请求方式访问
  4. react-router 按需加载
  5. java使用jstat分析内存
  6. 安卓系统手机软件_2M不到的安卓神器!有了这五款软件,iphone用户都羡慕
  7. Parse Fatal Error at line 4 column 43: 已经为元素 web-app 指定属性 xmlns。
  8. leetcode 48. 旋转图像
  9. Alibaba Sentinel 限流与熔断初探
  10. 动态规划 —— 背包问题 P08 —— 泛化物品背包
  11. 异常数据剔除---格拉布斯准则(java实现)
  12. 一套简单的进销存管理系统源码
  13. Python中函数介绍及其使用
  14. hbase regionserver挂掉报错has too many store files delaying flush up to 90000ms
  15. quicktime ogv_Windows的QuickTime已死,应卸载以确保安全
  16. 【uniapp】小程序添加通过卡号查找银行名并添加绑定等逻辑
  17. C++(4)——对称/旋转
  18. vue3.0 H5页面配置 Autoprefixer 报警Replace Autoprefixer browsers option to Browserslist config.
  19. 一文读懂APS系统的核心算法和数学理论
  20. 软考中级【数据库系统工程师】第1章:计算机系统知识,自学软考笔记,备考2022年5月份软考,计算机硬件系统CPU组成指令寄存器组总线输入输出的程序控制方式计算机体系结构与存储系统加密技术流水线技术

热门文章

  1. python爬取百度域名注册_python爬取百度域名_python爬取百度搜索結果url匯總
  2. mysql架设_主从mysql架设
  3. Mybatis源码分析之(五)mapper如何将数据库数据转换成java对象的
  4. Spring系列:父子容器详解
  5. java jni日志输出_java打印Jni层log
  6. win8.1已阻止java_win8系统下打开java程序时出现应用程序已被安全设置阻止的解决方法...
  7. python列表操作程序_Python入门篇(三)之列表
  8. 怎么看我装的sql能不能用_深入浅出sql优化(三)之单表索引优化
  9. java 教室借用管理系统_[内附完整源码和文档] 基于JAVA语言的学生选课信息管理系统...
  10. mosek 安装配置python_python安装、配置以及pyinstaller的安装、使用