技术开发 频道

深入解析Web 2.0应用安全

    【IT168 评论】这几年Web 2.0的应用让开发人员、最终用户和企业都取得了很多了不起的成果,从Google、Salesforce、MySpace、Flickr、 YouTube、Linkedin到今天十分火爆的Facebook,这些具有Web 2.0特征的公司,创造了很多奇迹。

  然而,Web 2.0应用程序、移动设备所带来的富媒体功能,将会使隐蔽强迫下载及混合攻击增加。例如,社交网站上的嵌入视频及其链接成为了黑客频繁植入恶意软件的目标。随着更多的员工使用富媒体和Web 2.0应用程序,企业便会不知不觉暴露在更大的攻击威胁之下。

  Ajax带来的典型风险

  在Web 1.0时代中,客户端浏览器和服务器之间的通信是同步的,也就是说,当用户在Web页面上填写表单(例如使用搜索功能),请求就会发送到服务器上,经过处 理后,服务器将完整的结果页面发送回来。这种做法的反复执行,极大浪费了网络带宽,也浪费了使用者很多等待多余信息的宝贵时间。

  Ajax可以和服务器只传输更新过的内容,它借助于客户端的JavaScript处理来自服务器的响应。同时,还有很多任务是由客户端本身来完成。因此,在网络上的数据交换更少、Web服务器的处理时间更短,用户感觉到的是更快的请求响应速度。

  说到Ajax的好处,我们不得不提到浏览器的“同源安全模型”。同源模型是客户端脚本运行的重要安全度量标准,它指的是来自于同一个源的脚本可 以互相访问其方法和属性,而拒绝非同源的访问。该模型的精髓是:它认为从任何站点装载的内容是不安全的,当被浏览器不太信任的脚本运行时,它们应该只被允 许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。

  为什么要有同源的限制呢?这是浏览器提供的最为基础的安全保障之一。如果放开同源限制,黑客就可以通过引诱用户访问嵌入在恶意站点上的正常应用,当用户访问该应用时,攻击脚本就可以在不同源之间互访,窃取用户登录信息,或者跟踪用户的各种操作。

  虽然Ajax技术极大地推动了Web 2.0的发展,但是由于Ajax的诸多特征(动态、异步、突破同源限制),也给应用安全带来了隐患。

  Ajax和XSS(跨站脚本攻击)

  XSS是目前发生频率最高的网络攻击手段之一,它通过引诱用户执行恶意的JavaScript脚本(如引诱用户点击包含恶意脚本的链接),来达 到窃取用户信息或者实现其它恶意行为的目的。在Web 1.0时代,XSS作为服务器端Web应用安全的隐患被广泛用户注意。正是由于Web 2.0鼓励信息分享、信息交互和协作,用户就有了更多的机会去看和修改他人的信息,比如通过Wiki、Blog或SNS社区网络,也是这种应用为黑客创造 了更多的XSS攻击机会。现在的浏览器允许在Web页面运行时主动插入HTML代码(比如使用innerHTML属性),如果这些代码中包含恶意的 JavaScript,则会被浏览器立刻执行,造成安全隐患。

  Ajax和CSRF(跨站请求伪造)

  在CSRF中,攻击者在用户完全未察觉的情况下,代表用户发送请求。这可以通过引诱用户点击链接,或是将请求嵌入到Image Tag等HTML标记中,强迫用户发送。这里例举一个攻击场景:攻击者向用户发送一封电子邮件,邮件中包含一个银行链接请求,请求的内容是从用户的银行账 户向攻击者账户进行转账,用户使用该链接进入银行网站并进行了登录操作,该请求就会携同用户Cookie信息自动发送给银行。如果银行网站仅把 Cookie值当做验明用户身份的唯一手段,那么Web应用就认为该请求是合法的,转账操作立刻被执行。

  在Ajax应用中,客户端和服务器的交互是通过HTTP协议实现的,如果站点安全保护措施不够强健,一旦CSRF成功,将会带来一系列灾难,如利用Web Mail服务发送邮件、代表用户在Blog上写注释、在SNS中修改用户信息等。

  Ajax和DoS(拒绝服务攻击)

  DoS是通过某种手段让服务器资源耗尽,阻断正常用户访问的攻击方法。比如向服务器提交大量请求,使服务器负荷过重。用户浏览器如果可以执行第 三方JavaScript,就会带来DoS的可能性,因为第三方JavaScript逻辑中,很可能包含大量导致服务器资源耗尽的循环程序,所以在允许使 用大量JavaScript的Ajax应用中,被DoS攻击概率大大提高。

  其它安全隐患

  Mushup应用通常是将任意第三方的Mushup组件组合在一起,如果攻击者向Mushup应用提供了恶意的Mushup组件,同时该应用没 有提供足够的安全保护的话,用户和整个Mushup应用就面临着巨大的安全隐患。因为一个恶意的Mashup组件可以向整个Mushup应用中注入恶意代 码,从而触发多种攻击行为,包括XSS、CSRF、DoS。如果该Mushup应用还提供服务器端的Ajax代理服务,恶意的客户端Mushup组件就可 以将用户的隐私发送到外部站点,因为Ajax代理突破了同源限制。

  不容忽视的Flash

  互联网从1996年引入了Flash技术后,通过动画和交互,改变了Web页面的用户体验。

  2004年3月,Macromedia公司基于其专有的Macromedia Flash平台,发布了Flex。它涵盖了支持RIA(Rich Internet Applications)开发和部署的一系列技术。在Web 2.0时代,越来越多的开发者使用Flex技术开发Flash应用,由此带来的安全隐患也不容忽视。

  由于Flash支持全局变量,因此带来了很多安全隐患。只要攻击者控制了全局变量,那么他就可以实施多种攻击行为。

  Cross-Site Flashing(跨站Flash攻击)

  这种攻击原理和XSS相似,不过CSF是通过向网站注入恶意的Flash程序来实施攻击。由于Web 2.0时代的应用复杂性(如Mushup应用),注入的恶意Flash不但可以攻击同源内的应用,还可能在非同源的各个组件中传播。

  Cross-Site Scripting through Flash(通过Flash进行跨站脚本攻击)

  该方法使用易受感染的Flash文件进行典型的XSS攻击,和XSF很相似,攻击的发生同样来源于对全局变量的引用,如将全局变量作为装入函数的参数。

  攻击者使用恶意脚本,可能执行如下操作:1.将用户的Cookie值发送给攻击者;2.将用户的共享Flash对象发送给攻击者;3.将可通过DOM(如URL、表单字段等)访问的信息发送给攻击者。

0
相关文章