一、什么是XSS
跨网站指令码(英语:Cross-site scripting,通常简称为:XSS)是一种网站应用程式的安全漏洞攻击,是代码注入的一种。它允许恶意使用者将程式码注入到网页上,其他使用者在观看网页时就会受到影响。这类攻击通常包含了 HTML 以及使用者端脚本语言。
XSS是一种经常出现在文本应用中的计算机大全漏洞,也是web中主流的攻击方式,也是盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
二、XSS的类型
1、反射型 XSS(Reflected XSS)
1.1.具体介绍
攻击者通过构造带有恶意代码的URL,并诱导用户点击该链接,服务器接收到请求后,将恶意代码反射回用户的浏览器并执行。这种类型的脚本最为常见,也是使用最为广泛的一种,主要用于将恶意脚本附加到URL地址的参数中。
一般使用的将构造好的URL发给受害者,使受害者点击触发,而且只执行一次,非持久化。
1.2.攻击流程
2、存储型 XSS(Stored XSS)
2.1.具体介绍
攻击者将恶意代码存储到目标网站(web server)的数据库中,当其他用户浏览相关页面时,恶意代码会从服务器上返回并在用户的浏览器中执行。这类XSS通常无法直接在URL中看到恶意代码,具有较强的持久性和隐蔽性。
存储型XSS具有持久性,这种XSS比较危险,容易造成蠕虫、盗取cookie。每一个访问特定页面的用户,都会受到攻击。
2.2.攻击过程
3、DOM 型 XSS(DOM-based XSS)
3.1具体介绍
攻击者利用网页的 DOM(文档对象模型) 结构漏洞,修改了网页的内容,使得恶意代码被执行。DOM型无需和后端交互,而是基于JavaScript上,JS解析URL中恶意参数导致执行JS代码。
3.2攻击流程
- 攻击者找到一个可被用户访问的页面,该页面包含有漏洞的 JavaScript 代码或由用户输入直接生成的 DOM 结构。
- 攻击者通过某种方式,例如发送特制的 URL 或通过篡改页面内容的方式,将恶意代码注入到页面中。
- 用户在浏览器中访问被注入恶意代码的页面时,浏览器解析并执行了这些代码,从而触发了攻击。
- 恶意代码在用户的浏览器中修改了页面的 DOM 树结构,通过操作 DOM 元素和属性,攻击者可以实现各种攻击行为,如盗取用户信息、篡改页面内容等。
三、XSS的危害
1、针对用户
- 盗取用户cookie
- 让网站弹广告
- 恶意连接钓鱼
- 执行一些恶意的操作和修改
2、针对web服务
- 劫持后台(常见)
- 篡改页面
- 传播蠕虫
- 内网扫描(常见)
补充
XSS蠕虫攻击
XSS蠕虫的破坏力和影响力都是巨大的。XSS蠕虫主要发生在用户之间存在交互行为的页面中,当Web应用程序对用户输入的数据信息没有做严格的过滤时,通过结合Ajax的异步提交,就可以实现在植入恶意代码的同时,将恶意代码进行对外发送,即实现了代码的感染和传播,也就形成了XSS蠕虫。
四、常规防范
XSS防御的总体思路是:对输入进行过滤,对输出进行编码。
过滤:根据业务需求进行过滤,比如输出点要求输入手机号,则只允许输入手机号格式的数字。
转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输入到JS里面的进行JS转义。