真实处理可能导致 XSS 攻击的问题

XSS 攻击就是跨站脚本攻击。一般是由攻击者找寻到网站的 HTML 漏洞并嵌入 Script 进行攻击。之前都是在一些社区论坛看到相关文章,最近接触到的项目也真实遇到了可能出现这种漏洞攻击的情况。

情况介绍

本次遇到的问题出现于一个三端(iOS、安卓、小程序)共通数据项目。搭配一个 H5 页面,该单页 H5 使用 Vuejs 技术栈,其中详情页由后端传过来的数据使用 Vue 进行渲染。

其中的文章详情,后端返回的有两种情况。一种是用户自己所输入的文章;一种是后台管理页通过富文本编辑器发布的文章。


漏洞分析

在未修复该隐患之前,从后端返回来的文章都一致用 v-html 渲染,因为后台管理页通过富文本编辑器发布的文章会自带 css 样式,所以通过了 v-html 渲染,然而这里并没有考虑到用户可能会通过使用 <script> 类型的标签运行 JS 程序来对网站进行攻击。

下图就是在发现该隐患之后,做的安全性测试。可以看到当我们输入 <div onclick="alert('bug')">测试</div> 时,由于通过 v-html 渲染,onclick 中的事件被执行了。这是极其危险的。

XSS



由此我们找到了这个地方。

隐患代码


修复漏洞

使用了 v-if 命令进行判断,选择只有在 list.class === 1 (是后台富文本编辑器发布文章)的时候,才会使用 v-html 进行渲染。

修复后代码



修改之后,解决了用户自行输入可能导致 XSS 攻击的漏洞。
修复后

本文结束  感谢您的阅读
0%