消除不受信任的HTML (来防止XSS攻击)

问题

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

原文地址:https://www.cnblogs.com/deityjian/p/12541764.html

时间: 2024-11-07 12:06:27

消除不受信任的HTML (来防止XSS攻击)的相关文章

【Jsoup学习礼记】消除不受信任的HTML (来防止XSS攻击)

问题 在做网站的时候,经常会提供用户评论的功能.有些不怀好意的用户,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,此时需要清理该HTML,以避免跨站脚本cross-site scripting攻击(XSS). 方法 使用jsoup HTML Cleaner 方法进行清除,但需要指定一个可配置的 Whitelist. String unsafe = "<p><a href='http://example.com/' onclick='s

解决虚拟桌面IE受信任站点与active控件下载提示的方法

Pool池桌面(随机)安装完成以后,通过IE打开办公平台出现office控件问题: 1.  同一台虚拟桌面,同一个用户帐号,注册安装一次控件就行了. 2.  同一台虚拟桌面,不同的用户帐号,必须重新安装注册控件才行. 对于随机虚拟桌面来说,用户每次登录的可能都是不同的虚拟桌面,那么就会出现每次都要安装注册控件,这要如何来解决? 对于IE中的Active控件,如果要实现不会弹出提示,自动安装,是如何设置的? (1)加入可信站点: (2)设置可信站点的"自定义级别",其中相关Active控

nginx https ssl 设置受信任证书[原创]

1. 安装nginx 支持ssl模块 http://nginx.org/en/docs/configure.html yum -y install openssh openssh-devel (http_ssl_module 模块依赖openssh) ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid

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

通过 SSL 加密的 HTTPS 连接访问网站时,需要安装并配置一个受信任的 CA 根证书(Trusted CA Root Certificate).平常访问一些加密网站之所以不需要自己安装证书,是因为系统或浏览器已经提前安装了一些受信任机构颁发的证书.但有些时候访问一些组织或个人自己签发证书的网站的时候,就会收到浏览器发出的警告.此时可以将该证书添加到“受信任的根证书颁发机构”存储区,然后就不会再收到安全提示了. 快捷阅读目录 前言 从Windows 自带的浏览器 Internet Explo

[解决办法]已经安装了数字证书,但是谷歌浏览器登录https协议的web系统时仍然提示证书不受信任

已经安装了数字证书,但是谷歌浏览器登录https协议的web系统时仍然提示证书不受信任.如下图: 解决办法: 1.单击Chrome浏览器右侧设置菜单,选择"设置". 2.拖至页面下方,单击"显示高级设置". 3.单击高级设置中的"HTTPS/SSL"处的" 管理证书". 4.弹出框单击"导入",默认下一步. 5.单击"浏览",找到web系统的数字证书. 6.默认存储方式为"将所

浅谈组策略设置IE受信任站点

在企业中,通常会有一些业务系统,要求必须加入到客户端IE受信任站点,才能完全正常运行访问,在没有域的情况下,可能要通过管理员手动设置,或者通过其它网络推送方法来设置. 有了域之后,这项工作就可以很好的通过组策略来统一完成,管理员可以在AD里面专门定义一条用于IE设置的组策略,来集中管理客户端的IE设置,那么这条组策略应该如何设置,其实有很多种办法,今天笔者提取其中三条比较常见的场景来和各位看官进行讨论. 首先,最常见的肯定就是这条了,在计算机配置 - 管理模板 - Windows组件 - Int

企业云桌面-14-将vCenter 6.5证书导入-受信任人-企业

作者:学 无 止 境 QQ交流群:454544014 注意: <企业云桌面>系列博文是<企业云桌面规划.部署与运维实践指南>的基础部分,因为书中内容涉及非常多,非常全面,所以基础部分将以博文的形式给读者展现,将在书中引用. <企业云桌面规划.部署与运维实践指南>将以某社保中心云桌面为中心,采用VMware Workstation Pro 12.5.2在1台物理机上模拟.读者按书中的步骤一步一步去做,就可以实现.     1) 在IE中访问https://061-vcen

允许受信任的用户进行委派

TechNet 库DeploymentForefrontIdentity and Access Management基础结构优化浏览器Microsoft Dynamics Products and TechnologiesMicrosoft IntuneOffice 产品ScriptingOnline Services使用 Windows PowerShell 编写脚本安全和更新服务器产品和技术面向 IT 专业人员的解决方案指南System CenterSQL ServerMicrosoft S

iPhone打开应用显示未受信任企业级开发者无法打开

在苹果的系统更新到 iOS 9.0后,一些不是从AppStore上下载的应用打不开,显示为”未受信任企业级开发者“,而且只有一个 ”取消“ 按钮. 其实在iOS 9之前 是有一个信任按钮的 好,不说废话. 1.先打开iPhone的 ”设置“, 2.点击”通用“ 3.下来到下面部分 ,点击”设备管理“,在iPhone 6s上显示是设备管理,但是在iPhone 6及以下不是这个选项,叫”描述文件“或者其他,反正是在VPN选择的下面 4.选择需要信任的企业       5.点击”信任“即可,然后就可以