对文本编辑器的XSS漏洞攻击防护

         针对客户编写文本文档的作用点,许多情况下,业务上须要准许客户键入自定的样式,非常简单立即的方案是应用富文本编辑器:适用客户在web前端自定的html代码传入,最后一样以html代码的方法呈现。不一样的业务将会有各式各样不一样的实际完成方法,但并肩而立,最后都能够抽象成“键入->分布式锁->导出”来描述。假如整个过程不开展其他解决,便会形成XSS漏洞。殊不知普遍的XSS防护方案中的代码转译,彻底不适用以这样的情景。那样余下的方案就仅有把不安全的信息进行过滤掉了。通常,安全技术人员在测试上边的过程时,会在web前端递交html代码富文本编辑器给web后台以前,对Post请求开展屏蔽,随后在信息中插进类似下面的代码,来证实漏洞产生:

outputo-20220117-100333-849-kvbj.png

<img src=1 onerror="alert(123)">

假如应用web后台没有开展进行过滤,查阅文章内容时,网页页面会执行插进的js代码,弹框。

当安全技术人员将这种的PoC递交给开发设计时,假如开发设计是一个新手,通常第一反应是用黑名单的方法进行过滤掉onerror事件、script标识。

殊不知有阅历的开发设计朋友都了解,黑名单无论如何更新维护,通常全部都是浪费时间精力,最后都很难逃离被绕过的结局。最有效的方案是应用白名单进行过滤。

下列链接中的信息涵盖了某些普遍的XSS攻击方式及绕过方法,没有在这里深入探讨,有兴趣的可以自己认真了解一下。针对上边的业务流程,进行过滤可以在2个阶段完成。一个是服务器端在读取到web前端传入的信息后,对信息开展进行过滤解决,另外一个是信息返回给web前端,web前端将信息渲染到网页页面呈现以前。

服务器端进行过滤(Java完成)

jsoup

jsoup是一款Java的HTML在线解析,可立即解析某一网页地址地址、HTML文本文档信息。它保证了一个十分省劲的API接口,可利用DOM、CSS及其类似JQuery的使用方法来拿出和操作信息。按照ICM协议公布,可安心用以商业项目。

jsoup内嵌了某些白名单的标识特性string,与此同时适用客户自定,或是在这个基础上按照需要灵巧拓展。

分享: