【51CTO.com 独家特稿】近些年来,Web安全威胁日益严重,跨站脚本攻击、跨站请求伪造攻击、点击劫持攻击等,层出不穷。我们知道,web安全与浏览器 密切相关,因为浏览器是web应用的执行环境,就像桌面应用程序跟操作系统的关系相仿。
那么,IE8能否为我们的Web安全带来一缕清风吗?
一、Web安全形势日益严峻
据微软称,IE8在开发过程中就考虑到了已有的和正在浮现的各种Web威胁。
在各种Web应用程序安全性漏洞中,最阴险的漏洞之一 称为跨站请求伪造(CSRF),人们将其称为Web漏洞中“沉睡的巨人”,并且这种漏洞修补起来也颇为不易。浏览器安全模型的设计思想是允许多个网站同时交互、站点之间可以无缝浏览,而CSRF攻击恰恰就是利用了这一点。
随着个人数据等有价值的信息不断从最终用户的PC向流行的Web应用程序迁移,CSRF及其他Web 应用程序漏洞将日益受到人们的关注。
二、XDomainRequest对象应运而生
为了抵抗CSRF攻击,IE8引入了一个XDomainRequest对象,它在允许以服务器权限跨域通信的同时还包含一些防御CSRF攻击的特殊 限制。最终用户可以通过在不使用web应用的时候退出敏感的网站以及使用InPrivate Browsing会话浏览页面来减轻CSRF攻击的影 响,因为InPrivate会话会清空Cookie,所以无法通过CSRF攻击来替换缓存的Cookie。
然而,Web应用程序本身必须设计成能够防御CSRF攻击。设计良好的Web应用程序经常通过挑战/令牌或者类似的策略来检查非受害 者用户本意发出的恶意请求来自我保护。遗憾的是,挑战/令牌和类似的策略本身却受到某些漏洞的影响,其中第一种漏洞是跨站 点脚本攻击(XSS)。如果一个由令牌保护的Web应用程序包含一个跨站点脚本攻击安全漏洞,那么它很可能会由于安全令牌失窃而导致CSRF攻击。
幸运的是,IE8包含一个XSS过滤器和一些其他功能,可以帮助抵御XSS攻击,从而降低令牌失窃的几率。除此之外,还可以利用点击劫持来协助实施CSRF攻击。点击劫持可以使用户在不知不觉中单击一个模糊的或者隐藏的web元素,从 而导致非本意的处理。一次成功的点击劫持攻击可以轻易化解通过使用户确认其交易的CSRF保护措施。
举例来说,如果一个网络商 店使用Cookie来进行身份验证,并提供了一键购买服务。 IE8显示一个模拟的web购物站点,下面是其中一张膝上型计算机的图片:
图1 |
图2 |
图3 |
上面是一个恶意的页面,显示的文本表明用户已经购买了一个膝上型计算机。 当然,这里只是一个非常简单的点击劫持攻击,但是比这复杂的点击劫持攻击也是存在的。
为了缓解点击劫持之痛,人们提出了许多方法,但是它们必须在兼容性和用户体验目前做一些折中,或者需要对现有标准作重大修 改。目前,使用最广泛也是最简单的抵御点击劫持攻击的方案称为frame busting技术,它能防止有弱点的页面被框架化,例如防 止页面被iframe引用。遗憾的是,frame-busting机制通常需要用到脚本,但是我们知道绕过脚本不是不可能的。
三、X-FRAME-OPTIONS如何抗击点击绑架
点击绑架漏洞是由Jeremiah Grossman及Robert Hansen在去年9月首度揭露,该漏洞可让骇客仿造合法网页,并将伪造的透明网页 覆盖于合法网页之上,因此使用者以为是在合法网页上的鼠标点击,实际上是触发了恶意网页的指令。
如果攻击者伪造的是网络银 行网页,那么使用者也许只是按了某一个网页链接,却可能是将钱转到陌生的帐户中,黑客也可通过此漏洞让使用者下载恶意程序 或是执行任何功能。 IE8引入了一种防止页面被框架化的机制来降低点击劫持所带来的危害。
Web开发人员可以为返回的HTML页面添加一个名为的HTTP应 答头,以规定该页面是否可以被嵌入在iframe里面。如果X-FRAME-OPTIONS的值为DENY,那么IE8就不允许该页面包含在一个框架中 。如果其值为SAMEORIGIN,那么只有在顶级浏览内容与包含X-FRAME-OPTIONS的内容不同源时,IE才会阻止该页面。
举例来说,如果http://shop.example.com/confirm.asp包含一个DENY伪指令,那么该页面就无法放入一个子框架中,无论父框架位于何处。相 反,如果X-FRAME-OPTIONS伪指令的值为SAMEORIGIN,那么该页面就可以放入到任何来自http://shop.example.com的页面的框架中。
当X-FRAME-OPTIONS阻止显示某页面时,浏览器会弹出一个本地错误页面,说明有关限制,并提供一个链接,该链接将在一个新的 窗口中打开框架。当在一个新的窗口中显示,而非在子框架中显示的话,那么页面内容也就无法为点击劫持所用了。
图4 |
上面是一个恶意的页面,然而,这时候仅仅展示了猫图片,来自实际的webshop的订单按钮却没有显示出来。其中的错误信息指示 ,内容无法在框架中显示。
通过使用X-FRAME-OPTIONS伪指令,Web开发人员可以立即帮助IE8用户减轻来自各种Web 应用程序攻击的威胁。当然,我们希望其 它浏览器也能实现这种X-FRAME-OPTIONS伪指令,因为作为一种防御点击劫持的手段,它相对易于部署,并且兼容性也很好。
四、Web安全任重而道远
虽然微软宣称修补了点击劫持漏洞,但这不是立竿见影的方法,因为它要求网站及Web开发人员的配合,而不是直接保护web用户的 安全。此外,要想让所有网站都采用微软的机制,可能还要有很长的路要走。还有,微软提供的解决方案是非跨平台的,也就是说 ,只对IE8有效。目前出炉的另一个解决方案为针对Mozilla Firefox设计的NoScript外挂程序,该程序可关闭脚本功能并阻挡利用 框架的攻击。
【51CTO.COM 独家特稿,转载请注明出处及作者!】
【编辑推荐】