反射型XSS
反射型XSS是比较常见和广泛的一类,举例来说,当一个网站的代码中包含类似下面的语句:<?php echo "<p>hello, $_GET['user']</p>";?>
,那么在访问时设置 /?user=</p><script>alert("hack")</script><p>
,则可执行预设好的JavaScript代码。
反射型XSS通常出现在搜索等功能中,需要被攻击者点击对应的链接才能触发,通常在URL中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个GET请求来提交带有恶意代码的链接。造成反弹型XSS ,主要是GET类型且受到XSS Auditor、NoScript等防御手段的影响较大。
储存型XSS
储存型XSS相比反射型来说危害较大,此类xss不需要用户点击特定的url就能执行跨站脚本,攻击者事先将恶意JavaScript代码上传或存储漏洞服务器中,把攻击载荷存入服务器中,造成持久化的攻击。只要受害者浏览包括含此恶意的代码的页面就会执行恶意代码。常见的就是在博客留言板、反馈投诉、论坛评论、将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。
反射型XSS与存储型XSS的区别
存储型和反射型相比,只是多了输入存储、输出取出的过程。
简单点说: 反射型是:输入–输出;
存储型是:输入–进入数据库*–取出数据库–输出。 这样一来,大家应该注意到以下差别:
反射型是:绝大部分情况下,输入在哪里,输出就在哪里。
存储型是:输入在 A 处进入数据库, 而输出则可能出现在其它任何用到数据的地方。
反射型是:输入大部分位于地址栏或来自 DOM 的某些属性,也会偶尔有数据在请求中(POST 类型)
存储型是:输入大部分来自 POST/GET 请求,常见于一些保存操作中。
反射性的xss通俗的来说就是你构造好的xss,发给受害者进行点击从而发起攻击
DOM XSS
DOM型XSS不同之处在于DOM型XSS