应用安全:Web攻击手段及防御之—XSS
概念
XSS全称为Cross Site Script,即跨站点脚本攻击,XSS攻击是最为普遍且中招率最多的web攻击方式,一般攻击者通过在网页恶意植入攻击脚本来篡改网页,在用户浏览网页时就能执行恶意的操作,像html、css、img都有可能被攻击。
像前不久微信貌似就中招,好像是在朋友圈发送一个带有脚本的链接,然后通过点击该链接就会弹出一个提示,虽然没有造成什么影响,但这是XSS攻击最鲜明的特点。
分类
XSS现在主要分为以下两种攻击类型:
1、反射型漏洞
这种类型攻击者一般通过在网页中嵌入含有恶意攻击脚本的链接,或者通过发送带脚本的链接给受害者,这个脚本链接是攻击者自己的服务器,用户通过点击该链接就能达到攻击的目的。如http://www.test.com/p=<script src=... />,这样受害者的网页就嵌入了这段脚本,受害者通过点击链接触发攻击脚本。
新浪微博曾经就出现过一次较为严重的XSS攻击事件,攻击者通过发送一个带有链接的微博诱导用户点击,通过点击脚本链接大量用户自动发送某些不良信息和私信并自动关注攻击者的微博账号,这是典型的反射型漏洞。
这次新浪微博事件显然是一次推广营销而已,并没有严重影响新浪的服务,然而现实中攻击者可以通过窃取用户cookie获取用户名密码等重要信息来伪造用户交易、窃取用户的财产等影响用户财产安全的恶意行为。
2、存储型漏洞
这种类型是影响最为广泛的且危害网站安全自身的攻击方式,攻击者通过上传恶意脚本到网站服务器或保存到数据库中,恶意脚本就会包含在网页中,这样会导致所有浏览该网页的用户有中招的可能。这种攻击类型一般常见在博客、论坛等网站中。
防御手段
1、危险字符过滤
即对用户输入的危险字符进行转义,如>转义为"&gt",<转义为"&lt" ,如果被转义有误解,可以对<script src=..这种类型的<才进行转义,这样就能避免大部分的XSS攻击。
2、使用http only的cookie
httpOnly由微软在IE中提出,禁止用户在浏览器中通过脚本访问带有httpOnly的cookie。有了这个特性,如果是用户敏感信息保存在cookie中的,可以通过在cookie加下httpOnly属性避免XSS攻击cookie造成用户信息泄漏。
最后,虽然这些攻击方式都有对应的防御手段,但是这些攻击方式也有日异月新的变化和发展,在开发web项目时也一定要重视XSS脚本攻击带来的危害,及时加强防御,不要让攻击有可乘之机。