跨站脚本攻击(XSS)漏洞
跨站脚本攻击XSS
XSS介绍
简介
跨站脚本攻击全称是Cross Site Script,为了和层叠样式表css有所区别,所以在安全领域叫xss。在一开始,这种攻击是跨域的,发展到了今天,因为javascript的强大功能和前端应用的复杂化,是否跨域已经不重要。
原理
攻击者在网页中嵌入客户端脚本,当用户用浏览器浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行。
本质
XSS的本质是一种HTML注入,用户的数据被当成HTML代码的一部分来执行,从而混淆了原本的语义,产生了新的语义
XSS类型
反射型XSS
反射型XSS也被称为非持久型XSS,是最容易出现的一种XSS漏洞,当用户访问一个带有XSS代码的URL请求时,服务器端接受数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。这个过程像是一次反射,故称反射型XSS。
存储型XSS
反射型XSS也被称为持久型XSS,是最危险的一种XSS。允许用户存储数据的Web应用程序都有可能出现存储型xss漏洞,当攻击者提交一段XSS代码后被服务器接收并存储,当攻击者再次访问某个页面时,这段代码被响应到浏览器,造成XSS攻击
DOM XSS
通过修改页面的DOM节点形成的XSS。从效果上来说,DOM XSS也是反射型XSS,因为形成的原因比较特殊,所以单独划分出来。
XSS的防御
HttpOnly
为关键性cookie设置httponly属性,可以禁止网页的javascript访问该cookie,可以有效解决XSS后的cookie劫持攻击
输入检查
检查用户输入是否存在一些特殊字符,如<、>等,对这些字符进行过滤或编码
在服务端和客户端进行同样的输入检查,客户端的JavaScript检查可以阻挡误操作的正常用户,节省服务器资源
输出检查
在变量输出到html页面时,对特殊字符作转码或转义