造成XSS漏洞的原因就是,对攻击者的输入没有经过严格的控制,使得攻击者通过巧妙的方法注入恶意指令代码到网页,进行加载并执行。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java, VBScript, ActiveX, Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、个人网页内容、会话和cookie等各种内容。
1)非持久型:
通过 GET、POST、referer 等参数未加处理直接输出到页面执行。该类型是最为常见的,攻击者主要利用此类型通过email、热度非常大的论坛、或者有针对性的某一用户发送一个隐藏性的链接,让受害者进行点击触发。
2)持久型:
由攻击者输入恶意数据保存在数据库,再由服务器脚本程序从数据库中读取数据,然后显示在公共显示的固定页面上,那么所有浏览该页面的用户都会被攻击。该类型攻击性非常大,危险也非常大。
3)DOM型:
由Javascript 脚本动态创建、输出到页面造成的。该类型不容易发现,具有隐藏性的特点,必需手工去发现。
4)浏览器漏洞造成:
在某个浏览器版本造成的漏洞,由浏览于用户浏览历史、页面交互等方式,未加处理,所造成的。该漏洞攻击危害非常大,一旦存在,基本可以实现跨域操作,严重者可以以本地权限执行 javascript 脚本,访问读取本地文件。