首页 > 信息安全 > 正文

XSS漏洞攻击以及防范措施

2011-11-29 10:06:24  来源:CIO时代网

摘要:XSS漏洞的出现简单来说,就是让不支持富文本的区域支持了富文本的执行,例如blog的标题是不支持富文本的,但由于页面显示时没去做处理……
关键词: XSS漏洞

  XSS漏洞的出现简单来说,就是让不支持富文本的区域支持了富文本的执行,例如blog的标题是不支持富文本的,但由于页面显示时没去做处理,导致了可以在标题中嵌入像文本加粗、变颜色等等的普通HTML,当然,攻击者也就可以嵌入恶意的javascript了,例如获取你在当前网站的cookie的javascript:document.cookie等等,另外一种就是支持富文本的区域没有去过滤一些恶意的javascript,例如blog的文章内容中内嵌获取cookie等恶意的javascript代码,这两类现象太多了,反倒是富文本的区域会好一些,例如多数论坛采用的UBB等等,而且对于富文本,大家都会比较重视,但反而是非富文本区域,很容易忽略其会产生XSS漏洞。


  上面说的好像有些太抽象了,举个例子来说吧,例如blog的标题,假设在存到数据库的时候是直接将blog标题文本框中的内容存储,在显示的时候直接用$blog.title这样的方式去显示的话,那么只要在blog标题中输入,然后保存,在显示的时候这段javascript就会被正常执行了,虽然这样的看似没有什么大的危害,但攻击者同样不会采取这么简单的方式,例如可以直接给你一段经过url编码的串,而其中就是利用网站的XSS漏洞将你的cookie信息发送至一个攻击性质的记录cookie的网站等,又或者完全可以利用网站的XSS漏洞埋上一段隐藏的img来嵌入这样而已的url,那么你的cookie就会不知不觉的被盗用,而偏偏现在大部分的网站都是借助cookie来代表用户的身份,这样,当攻击者拿到cookie之后,也就可以假冒你的身份大摇大摆的进入相应的网站了。


  上面说的是比较典型的一种XSS漏洞产生的情况,另外一种比较典型的是domxss的情况,这种情况多数是攻击者利用直接闭合标签,从而执行恶意的javascript代码,例如页面中有个文本框,这个文本框的内容在提交后会被记录并继续显示在结果页面的文本框架中,假设第二个页面中文本框是这么写的:,那么只要在前一页面中输入“>这样的内容,在第二个页面显示的时候就会变成:>,攻击者通过闭合input标签实现了执行恶意的javascript代码,同样,如果你的javascript中也有类似的读取url参数或前页提交的内容,又或数据库中的内容的话,攻击者都有可能利用这种闭合标签的方式来实施攻击。


  这样看起来,产生XSS漏洞的地方确实可能会有很多,说完上面这些,大家估计仍然觉得xss漏洞即使被利用也没什么吧,确实,也许xss漏洞只能做到盗用个用户cookie来玩玩,但是一旦它盗用了cookie,然后再结合一些其他的攻击手段,例如csrf的话,很有可能会造成非常严重的后果,当年的MySpace攻击事件就源于此,更何况对于大部分的网站来说,用户身份被盗也不是什么好事。


  因此还是有必要对XSS漏洞进行防范的,根据上面阐述的XSS漏洞产生的原因来说,对于非富文本的区域来讲,其实只需要对其进行HTML编码就没问题了,而对于富文本的区域,则相对麻烦一些,需要有一个有效的过滤攻击性质的html代码的方式,但这个确实很难很难完全做到100%的防范,因为编写恶意html代码的方式实在太多了,url编码方式,注释方式,十六进制方式等等,完全无法穷举,但目前出现在网站中的,其实大部分都是非富文本的XSS漏洞,只要对这些非富文本的XSS漏洞进行了防范的话,至少可以很大程度的提升网站攻击的门槛,不至于被一些很简单的攻击手段攻击,像freemarker模板中,可以直接支持变量字符的html编码,例如${user?html}这样的方式就可以了,还是很简单的。
 


第三十五届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:kaifangli

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。