XSS漏洞原理
XSS攻击可以分为三种:反射型、存储型和DOM型
- 反射型 XSS
反射型XSS又称非持久型XSS ,这种攻击往往具有一次性。
攻击方式:攻击者通过电子邮件等方式将包含 XSS 代码的恶意链接发送给目标用户;
当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏览器;
浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。
- 存储型 XSS
存储型XSS 又称持久型XSS,攻击脚本将被永久的存放再目标服务器的数据库或文件中,具有很高的隐蔽性。
攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中;
随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器地后端存储器中;
当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。
例如恶意攻击者在留言板中加入以下代码:
<script>alert(/XSS/)</script> #在PHP等语言中alert表示弹窗
浏览这个留言板的用户就会看到一个XSS的弹窗。
- DOM 型 XSS
DOM全称Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。
DOM型XSS其实是反射型XSS的一种特殊类型,它是基于DOM文档对象模型的一种漏洞。
攻击方式:用户请求一个经过专门设计过的URL,它由攻击者提交,并且其中包含XSS代码。
服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞