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

在开发网站的时候,经常会提供用户评论的功能。有些不怀好意的用户,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,此时需要清理该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攻击,还可以限制用户可以输入的标签范围。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV 例程200篇】219. 添加数字水印(盲水印)

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】219. 添加数字水印&#xff08;盲水印&#xff09; 8.2 添加数字盲水印 数字水印&#xff0c;是指将特征信息嵌入音频、图像或是视频等数字信号中。 数字水印分为明水印和盲水印&#xff08;blind watermark&#x…

搜索栏联想词提示

在我们需要游览一些网站的时候&#xff0c;我们经常需要使用搜索引擎来进行搜索&#xff0c;无论是百度谷歌还是搜狐等&#xff0c;我们都需要在搜索栏中输入相关的搜索词&#xff0c;当我们点击进行输入的时候&#xff0c;下面会给出许许多多的提示词&#xff0c;程序自动联想…

【OpenCV 例程200篇】220.对图像进行马赛克处理

文章目录&#xff1a;『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】220.对图像进行马赛克处理 9. 图像的马赛克处理 马赛克效果是广泛使用的图像和视频处理方法。将图像中指定区域的色阶细节劣化&#xff0c;造成色块模糊的效果&#xff0c;看上…

主成分分析得分 matlab,主成分分析Matlab程序设计

PCA步骤&#xff1a;(1)对原始数据进行标准化处理(2)计算样本相关系数矩阵(3)计算相关系数矩阵R的特征值和相应的特征向量(4)选择重要的主成分&#xff0c;写出主成分表达式案例问题&#xff1a;企业综合实力排序企业综合实力评价表&#xff1a;企业序号净利润率/%固定资产利润…

【OpenCV 例程200篇】223. 特征提取之多边形拟合(cv.approxPolyDP)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】223. 特征提取之多边形拟合 目标特征的基本概念 通过图像分割获得多个区域&#xff0c;得到区域内的像素集合或区域边界像素集合。我们把感兴趣的人或物称为目标&#xff0c;目标所处的区域就是目标…

matlab指令vpa(j10),matlab中vpa函数

Matlab中矩阵函数_IT/计算机_专业资料。Matlab中矩阵函数 矩阵转置...Matlab 中 solve 函数主要是用来求解线性方程组的解析解或者精确解。对于得 出的结果是符号变量,可以通过 vpa()得出任意位数的数值解! solve 函数的语法定义主要有......控制系统matlab常用函数的使用_计算…

Eclipse快捷键生成语句

当我们使用Eclipse进行项目的开发的时候&#xff0c;有的时候我们需要重复输入main方法和输出语句等&#xff0c;下面就教给大家如何在Eclipse开发中使用快捷键生长main方法和输出语句。 快捷键生成语句 生成main方法&#xff1a;输入"main" &#xff0c;按ALT/&…

【OpenCV 例程200篇】221.加密马赛克图像处理与解密复原

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】221.加密马赛克图像处理与解密复原 9. 图像的马赛克处理 马赛克效果是广泛使用的图像和视频处理方法。将图像中指定区域的色阶细节劣化&#xff0c;造成色块模糊的效果&#xff0c;看上去像是一个个…

小网站asp好还是php好,网站程序是asp好还是php好,哪个更利于优化?

网站程序是asp好还是php好呢&#xff1f;如果我们要做seo优化&#xff0c;哪一个又更利于优化呢&#xff1f;毕竟&#xff0c;现在在网上所看到的程序&#xff0c;是比较多的&#xff0c;选择一个好的网站程序&#xff0c;可以少走很多弯路。如果&#xff0c;大家建一个网站是为…

Java IO深入

IO体系 Java IO 体系种类繁多&#xff0c;感觉很复杂&#xff0c;但其实是 IO 涉及的因素太多了。在进行介绍的时候添加了设计模式等的使用&#xff0c;会让你感觉更加难以理解难以使用这些IO类&#xff0c;在此对java的IO做了一个详细的总结。 IO 类设计出来&#xff0c;肯定…

【OpenCV 例程200篇】222. 特征提取之弗里曼链码(Freeman chain code)

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】222. 特征提取之弗里曼链码&#xff08;Freeman chain code&#xff09; 目标特征的基本概念 通过图像分割获得多个区域&#xff0c;得到区域内的像素集合或区域边界像素集合。我们把感兴趣的人或物称为目标&#xff…

python2与python3,Python2和Python3的10大区别

1.性能Py3.0运行pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间&#xff0c;在字符串和整形操作上可以取得很好的优化结果。2.编码Py3.0源码文件默认使用utf-8编码&#xff0c;这就使得以下代码是合法的&#xff1a;>>>中国 china>>>…

【OpenCV 例程200篇】224. 特征提取之提取骨架

OpenCV 例程200篇 总目录 【youcans 的 OpenCV 例程200篇】224. 特征提取之提取骨架 目标特征的基本概念 通过图像分割获得多个区域&#xff0c;得到区域内的像素集合或区域边界像素集合。我们把感兴趣的人或物称为目标&#xff0c;目标所处的区域就是目标区域。 特征通常是针…

inuri .php id=,php常用函数(遇见就补充)

preg_match()preg_match(string pattern, string subject [, array matches [, int flags]])在subject字符串中搜索与 pattern给出的正则表达式相匹配的内容。如果提供了 matches&#xff0c;则会被搜索的结果所填充。$matches[0]将包含于整个模式匹配的文本&#xff0c;$match…

【OpenCV 例程200篇】226. 区域特征之紧致度/圆度/偏心率

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】226. 区域特征之紧致度/圆度/偏心率 特征通常是针对于图像中的某个目标而言的。 我们把感兴趣的人或物称为目标&#xff0c;目标所处的区域就是目标区域。图像分割之后&#xff0c;还要对目标区域进…

Java常见的几种设计模式

单例模式 指一个应用程序中&#xff0c;某个类的实例对象只有一个&#xff0c;你没有办法去new&#xff0c;因为构造器是被private修饰的&#xff0c;一般通过getInstance()的方法来获取它们的实例。 getInstance()的返回值是一个对象的引用&#xff0c;并不是一个新的实例&a…

【OpenCV 例程200篇】227. 特征描述之 LBP 纹理特征算子

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】227. 特征描述之 LBP 纹理特征算子 特征通常是针对于图像中的某个目标而言的。 针对目标所在区域的特征描述符&#xff08;Region descriptors&#xff09;&#xff0c;称为区域特征描述子。 4.2 纹…

php日志数据统计,awk 进行php日志累计报错统计

问题线上服务器一百多台通过tail -f /var/log/error_web* 方式来查看&#xff0c;速度滚动刷新太快&#xff0c;而且不方便定位问题按照前辈的『观察法』&#xff0c;作为新人实在是有难度&#xff0c;所以使用awk命令对输出格式格式化了一下。思路将每一行tail得到的日志通过a…

【OpenCV 例程200篇】228. 特征描述之 extendLBP 改进算子

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】228. 特征描述之 extendLBP 改进算子 特征通常是针对于图像中的某个目标而言的。针对目标所在区域的特征描述符&#xff08;Region descriptors&#xff09;&#xff0c;称为区域特征描述子。 局部…

Java设计模式汇总详解

设计模式 设计模式是很多程序员总结出来的最佳实践。曾经在刚开始写项目的时候学习过设计模式&#xff0c;在开发过程中&#xff0c;也主动或者被动的使用过。现在写代码虽说不会特意明确在用哪种设计模式&#xff0c;但潜移默化的写出来公认的最佳实践代码&#xff0c;毕竟看…