XSS跨站脚本攻击的英文全称是:cross-site scripting,它是 web 应用中最常见的一种计算机安全漏洞;恶意的网站用户可以通过它将一些代码插入其他用户访问的页面中去,这些代码通常是一些客户端脚本程序;攻击者能够利用这种漏洞去绕过一些访问控制、进行身份钓鱼、钓鱼攻击、网页挂马等等攻击行为,从而造成信息泄露甚至是大量的经济损失。
1)、xss 跨站漏洞种类多样性;2)、xss 跨站漏洞代码多样性;
xss 攻击的原理:
xss 属于被动式的攻击;攻击者先构造一个跨站页面,利用 script 、img、iframe 等各种方式使用户浏览这个页面的时候,触发对被攻击网站站点的 http 请求,此时,被攻击着如果在被攻击站点登录,就会持有该站点的 cookie;这样该站点会被认为被攻击者发起了一个 http 请求;而实际上这个请求时在被攻击者不知道的情况下发起的,由此攻击者在一定程度上达到冒充被攻击者的目的,进而多去权限等等目的。
xss 攻击主要分为两大类:一类是来自内部的攻击、一类是来自外部的攻击;内部的攻击主要是利用 web 程序自身的漏洞,提供特殊的字符串,从而使得跨站页面直接存在于被供给站点上,这个字符串被称之为跨站语句;这一类攻击所利用的漏洞非常类似于 SQL Injection 漏洞,都是由于 程序开发者没有对用户输入做充分的检查和过滤造成的;外部的攻击主要是指自己构造 xss 跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页;
xss 常见的攻击手法:
1)、依赖跨站漏洞,需要在被攻击网站额页面种入脚本的手法;例如:(1)、cookie 盗取,通过 javascript 获取被攻击网站种下的 cookie,并发送给攻击者;(2)、ajax 信息盗取,通过 javaScript 发起 ajax 请求;
2)、不依赖跨站漏洞的手法;例如:(1)、单向 http 动作,通过 img.src 等方法发起跨站访问,冒充被攻击者执行特权操作,但是这种方式很难拿到服务器的返回值;(2)、双向的 http 动作,如果服务器产生一段动态的 script ,那么可以用 script.src 的方法访问并拿到服务器的返回值;
防范的方式:
1)、对用户的提交内容进行可靠的验证;例如查询关键字、url、http、post 数据等,特别是可以让用户提供 HTML 的地方;
2)、避免 cookie 中泄漏用户的隐私;
3)、尽量采用 post 请求而非 get 请求;
4)、对用户提交信息总的 img 等 link 链接,检查是否有重定向回功能为链接;
5)、对 http refer 进行严格的效验