|
对数据进行正确地转义处理,以保证它们不会被解释为HTML代码(对浏览器而言)或者XML代码(对Flash而言)。
删除会被恶意使用的字符串或者字符
一般情况下,删除一些字符会对用户体验造成影响,举例来说,如果开发人员删除了上撇号(’),那么对某些人来说就会带来不便,如姓氏中带有撇号的人,他们的姓氏就无法正常显示。同时,严禁开发人员删除字符串,因为完全可以通过许多不同的形式来表示字符串。应用程序和浏览器会对字符串作出不同的解释。例如,SAMY蠕虫利用了IE不把换行符作为定界符字符这一事实,因此,IE看来JavaScript和jav%0dascr%0dipt是一回事。遗憾的是,MySpace把换行符解释为字的分界符号,并允许将向Samy(及其他人)的MySpace页面中放入下列内容:
〈 div id="mycode" expr="a_lert('1')" style="background:url('java
script:eval(document.all.mycode.expr)')"〉〈/div〉
我们建议对所有用户提供的又被发回给Web浏览器的数据都进行转义处理,包括AJAX调用、移动式应用、Web页面、重定向等等内的数据。然而,对字符串进行转义处理并不是我们想得那么简单:您必须根据用户提供的数据将被放到HTTP应答中的具体位置来决定使用URL编码、HTML实体编码或者JavaScript编码进行转义。
十、防范基于UTF-7的XSS
基于UTF-7的攻击是很容易防范的,只要强制指定在HTTP报头中的或者HTML响应内部的字符编码即可。我们建议对默认HTTP报头做如下设置:
Content-Type: text ml; charset=utf-8
还应当对全部HTML响应添加下列限制:
< meta http-equiv="Content-Type" content="text ml;charset=utf-8" >
十一、结束语
在浏览器中已经建立了一些安全措施——即同源策略和Cookie安全模型。此外,一些浏览器插件,诸如Flash Player、Outlook Express 以及Acrobat Reader等,带来了更多的安全问题和安全措施。然而,如果攻击者可以强迫用户执行源自特定域的JavaScript的话,这些额外的安全措施总是倾向于削弱同源策略的力量。
跨站点脚本攻击(XSS)技术能够强迫用户执行攻击者以受害者名义在某个域上选择的脚本,如JavaScript、VBScript、ActionScript,等等。XSS要求某个域上的Web应用程序能够提供(即供应、返回)被攻击者所控制的字符。因此,攻击者可以向页面注入代码,而这些代码将来会在这个有弱点的域的上下文中执行。本文详细介绍跨站脚本的危害,以及攻击者是如何诱骗受害者的。最后介绍针对跨站脚本攻击的防御措施。至此,读者已经能够对跨站脚本攻击有一个全面深入的了解了。
|
|
【收藏】【打印】【进入论坛】 |
|
|
|
|
|
|
|