通常 XSS 分为存储型和反射型,但还有一种比较特殊的 DOM 型 XSS,它本身属于反射型 XSS,不过介绍的时候需要单独来讲。因此,我就按 3 种类型划分:反射型、存储型、DOM 型。
反射型 XSS
我们首先来看反射型 XSS。反射型 XSS 又被称为非持久型跨站脚本,它是将攻击代码放在 URL 参数中,而不是存储到服务器,因此需要诱使用户点击才能触发攻击。
有人认为反射型 XSS 的危害不如存储型 XSS,但我认为没有什么区别。这里的挑战主要是 URL 是否包含攻击代码。
存储型 XSS
第二种 XSS 漏洞是存储型 XSS,它又被称为持久型跨站脚本。攻击者将恶意代码存储到服务器上,只要诱使受害者访问被插入恶意代码的页面即可触发。存储型 XSS 经常出现在一些可以发表评论的地方,如帖子、博客。
在 DVWA 靶场中就有一个存储型 XSS 案例,它是个留言本的功能,支持用户发表评论,然后将用户输入的数据直接存储到数据库,并输出到页面上。这个过程中因为未做任何的过滤,导致了 XSS 漏洞的产生。
存储型 XSS 的特点就是不需要在诱使用户访问的 URL 中包含攻击代码,因为它已经存储到了服务器中。
DOM 型 XSS
最后是 DOM 型 XSS 漏洞,它是基于文档对象模型(Document Objeet Model,DOM,用于将 Web页面与脚本语言连接起来的标准编程接口)的一种漏洞,它不经过服务端,而是通过 URL 传入参数去触发,因此也属于反射型 XSS。
由于客户端的 JavaScript 可以访问浏览器页面中的 DOM 对象,因此它能够决定如何处理当前页面的URL,比如获取 URL 中的相关数据进行处理,然后动态更新到页面上。这导致 DOM 型 XSS 的漏洞代码常位于网页的 JavaScript 代码中。
网友评论