通过HTML编码防御XSS跨站脚本攻击的研究
2016-05-14刘达
刘达
1 引言
跨站脚本攻击(Cross SiteScript,XSS)是指恶意的攻击者利用Web程序的安全漏洞,从客户端提交有含有恶意代码的表单内容或向他人发送含有恶意脚本的超链接以盗取用户Cookie信息,甚至获得管理员权限的网络攻击手段。目前针对XSS攻击的防御手段主要有提高浏览器的安全性能,在Web服务器端部署用户输入过滤器等方式,但面对XSS日新月异的攻击手段,防御的一方总是处于被动。针对上述问题,本文对如何在开发环节中对HTML网页的输入,输出数据进行编码以防范XSS攻击进行研究,并提出了相应的编码规范。
2 XSS攻击原理
XSS跨站脚本是指恶意攻击者巧妙利用Web应用程序在数据输入和输出过程中漏洞,将恶意代码嵌入网页或RUL,当用户浏览网页或点击链接访问网站时,恶意代码被执行,用户遭到攻击。XSS攻击类型可分为DOM Based XSS和Stored XSS。
2.1 DOM Based XSS
DOM Based XSS是一种基于网页DOM结构的攻击。攻击者在研究了目标用户所访问的网站URL结构并猜测出目标网站的页面处理方式后,向目标用户发送含有恶意脚本的目标网站链接。例如,网站A的Url结构是根据Content参数返回显示页面的。攻击者则可设计如下含恶意脚本的链接:
http://www.a.com?content=
该链接被执行后,用户的Cookie信息被攻击者获取,且页面将跳转至攻击搭建的B网站,继续骗取用户的账号与口令。这种攻击方式又被称为反射型XSS。
2.2 Stored XSS存储式XSS漏洞
Stored XSS存储式漏洞,又称为持久性跨站脚本攻击,其原理是通过网页表单将恶意脚击提交到网站服务器嵌入Web页面中,所有浏览该页面的用户客户端都将受到恶意脚本的攻击。
例如,网站A的留言板未对用户输入内容进行完善的过滤,恶意攻击者在留言板中输入恶意代码
网站的输出机制未过滤