扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
近些年来,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购物站点,网络中的某个恶意网站可以构造一个页面,用以强迫一个来自合法的商店的受害者页面嵌入一个IFRAME,并利用误导性的文本和图像叠加在框架的关键部分。
上面是一个恶意的页面,其中膝上型计算机的图片被一张猫的图片所覆盖。如果用户业已登陆商店,那么他可能在不知情的情况下受骗点击商店的页面,从而导致一个非本意的操作。
上面是一个恶意的页面,显示的文本表明用户已经购买了一个膝上型计算机。当然,这里只是一个非常简单的点击劫持攻击,但是比这复杂的点击劫持攻击也是存在的。
为了缓解点击劫持之痛,人们提出了许多方法,但是它们必须在兼容性和用户体验目前做一些折中,或者需要对现有标准作重大修改。目前,使用最广泛也是最简单的抵御点击劫持攻击的方案称为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阻止显示某页面时,浏览器会弹出一个本地错误页面,说明有关限制,并提供一个链接,该链接将在一个新的窗口中打开框架。当在一个新的窗口中显示,而非在子框架中显示的话,那么页面内容也就无法为点击劫持所用了。
上面是一个恶意的页面,然而,这时候仅仅展示了猫图片,来自实际的webshop的订单按钮却没有显示出来。其中的错误信息指示,内容无法在框架中显示。
通过使用X-FRAME-OPTIONS伪指令,Web开发人员可以立即帮助IE8用户减轻来自各种Web 应用程序攻击的威胁。当然,我们希望其它浏览器也能实现这种X-FRAME-OPTIONS伪指令,因为作为一种防御点击劫持的手段,它相对易于部署,并且兼容性也很好。
四、Web安全任重而道远
虽然微软宣称修补了点击劫持漏洞,但这不是立竿见影的方法,因为它要求网站及Web开发人员的配合,而不是直接保护web用户的安全。此外,要想让所有网站都采用微软的机制,可能还要有很长的路要走。还有,微软提供的解决方案是非跨平台的,也就是说 ,只对IE8有效。目前出炉的另一个解决方案为针对Mozilla Firefox设计的NoScript外挂程序,该程序可关闭脚本功能并阻挡利用框架的攻击。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。