Web 2.0应用安全深入解析
◆Web 2.0 应用安全解决方案
什么是 Web2.0 ?它包含了哪些技术?这些技术的产生又对网络应用安全带来了哪些隐患和风险?本文从这些问题着手,重点探讨 Web2.0 时代的技术特征和应用安全,并通过结合明鉴Web应用弱点扫描器安全解决方案,为大家提供面对新时代、新问题的应用安全应对思路。
一、什么是Web2.0?
Web 2.0,是由 O'Reilly 公司在 2003 年造的一个词,2004 年召开 Web 2.0 大会之后,这个词就流行起来,意指基于 Web 的下一代社区和托管服务,比如社会网络、维基百科、大众分类等等,帮助 Web 用户协作和分享。
二、Web 2.0 成功的核心模式
Web 2.0 和过去的 Web 1.0 之间有什么不同?讨论这个话题,最权威的莫过于 Tim O'Reilly 所写的"什么是 Web 2.0?",我在这里拾人牙慧,概述一下我的理解。Web 的演变是持续进行的,Web 就像是有生命的实体,在不断生长,所以当我们说 Web 2.0 和 Web 1.0 之间的差别时,是一个相对静态的阶段性观点,而不是绝对的。如前所述,Web 2.0 是指互联网泡沫之后,人们使用 Web 的方式的巨大变化,开发人员、最终用户和商家,都在不断地实践新的方法。几年过去,他们取得了很多了不起的成果,缔造了很多成功的 Web 2.0 公司,从 Google、Salesforce、MySpace、Flickr、Delicious、YouTube、Linkedin 到今天十分火爆的 Facebook,具有 Web 2.0 特征的公司,风起云涌。如何定义 Web 2.0 不重要,重要的是 Web 2.0 背后的模式和原则,这些模式对于 Web 2.0 的成功至关重要。
Web 2.0 具有八个核心模式,它们分别是:
群众智慧(Collective Intelligence)
建立一个参与架构,借助网络效应和算法,使得软件随着使用的人越来越多而变得越来越好。
数据,下一个"Intel Inside"
利用独特、难以复制的数据源,成为这个时代的"Intel Inside",其中,数据变得跟功能一样重要,成为核心竞争能力。
"复合"创新
建立一个平台,通过数据和服务的组合,来创造新的市场和机会。
丰富用户体验
超越传统的 Web 页面模式,让在线应用拥有桌面应用一样的丰富用户体验。
支持多种设备
支持各种连接到因特网的设备,为用户提供无所不在、无缝的在线体验。
软件即服务(Software as a Services,SaaS),和永久试验版(Perpetual Beta)
改变了传统软件开发和使用的模式,转向永久在线、持续更新、软件即服务的模式。
利用长尾
借助因特网带来的接触极大规模客户的能力以及极低成本的营销方式,来获得细分的"利基"(niche)市场的利润。
轻量级模型和低成本优势的可扩充能力
利用轻量级的商业模型和软件开发模式,来快速、廉价地构造产品和服务。
以上几个模式,分别关注不同方面,但是它们由如下几个 Web 2.0 的特质而相互关联起来:
大规模互连
今天我们从过去一对多的发布和通信,转向多对多的连接,网络效应使得边际同核心一样重要,颠覆着旧的通信、发布、分发和聚合模式。
去中心化
这种大规模互联,也颠覆着传统的控制和权力结构,带来更大程度的去中心化。从全球信息流动,营销,到新产品设计,这种发自底层的草根力量, 都在"叫板"来自权力阶层的声音。系统更多地从通过边沿的拉动来生长,而不是借助核心的推动向外生长。
以用户为中心
网络效应给予用户前所未有的力量,他们参与、对话、协作,最终产生巨大的影响。消费者可以说话、交流和讨论他们的经验,他们拥有控制权,积极主动地影响着产品的方向,同时也对那些积极应对的公司报以忠诚和口口相传的口碑营销。
开放
这种开放性,是以因特网的开放技术标准为基础的,但很快地演进到一个由开放应用所构成的生态系统,这些应用建构在开放数据、开放 API 和可重用的组件之上。开放,还意味着超越技术层次的更大程度的透明性,如公司对外沟通,共享知识产权、产品的开发过程等。
轻量级
软件由小团队使用敏捷方法设计和开发,使用简单数据格式和协议,采用运行开销小的平台和框架,应用和服务部署简易,商业上力图保持低的投资和成本,营销上利用简单的消费者之间的口口相传来形成病毒式传播。
自然浮现
不是依靠预先完整定义好的应用结构,而是让应用的结构和行为随着用户的实际使用而灵活适应和自然演变;成功来自合作,而不是控制。
这些特质,Web 2.0 的应用体现得越来越多,由这样的应用所构成的应用生态系统,具备了将大规模个性化的信息和服务带给极大规模普通人的潜力。
三、Web2.0 部分技术浅析
Web2.0 中涉及了很多名词和术语,比如 Tags、Blogs、Ajax、Flex、MalWare、Wiki、RSS、Social Networking、Podcast、Mushup等等。由于篇幅所限,我们仅在本章节分析 Ajax、Flex。
3.1、Ajax 和 Web2.0
Ajax 全称为"Asynchronous JavaScript and XML"(异步 JavaScript 和 XML),是一种创建交互式网页应用的网页开发技术。在 Web1.0 时代中,客户端浏览器和服务器之间的通讯是同步的,也就是说,当我们在 Web 页面上填写表单(例如使用搜索功能),请求就会发送到服务器上,经过处理后,服务器将完整的结果页面再次发送回来。可以看出,发送请求的前后两个页面,很多内容是完全重复的。这种做法的反复执行,极大的浪费了网络带宽,也浪费了使用者很多等待多余信息的宝贵时间。
Ajax 应用则可以和服务器通讯更改过的内容。它借助于客户端的 JavaScript 处理来自服务器的响应。同时,还有很多任务是由客户端本身来完成。因此,在网络上的数据交换更少、Web 服务器的处理时间更短。用户感觉到的是更快的请求响应速度。
由于 Ajax 良好的用户体验,被认为是 Web2.0 的典型技术特征,已经在很多成熟应用中被广泛采纳,如大家熟悉的 Google 地图、Google 搜索建议、Gmail 等。要了解更多 Ajax 信息,请访问 http://www.openajax.org/index.php
3.2、Ajax 技术特征
3.2.1 Ajax 动态特征
Ajax 是构建在 DHTML(动态 HTML)技术之上的,这包括:
JavaScript:在 Web 应用客户端广泛使用的脚本语言;
DOM:Document Object Model,文档对象模型,用来代表 HTML 或 XML 文档的标准对象模型,当前浏览器都支持 DOM 并且允许 JavaScript 代码使用 DOM 来动态修改 HTML 内容;
CSS:Cascading Style Sheets,级联样式表,是一种用来描述 HTML 文档展现的样式表语言,JavaScript 可以在访问 Web 页面时动态修改 CSS。通过这些动态技术,在 Ajax 应用中,客户端 JavaScript 通过动态修改 DOM 树结构和 CSS,实现了动态的更新 Web 页面。
3.2.2 Ajax 异步通讯特征
前面提到,Ajax 可以和服务器交换更改过的、而非整个页面的内容。这种异步通讯,是通过如下技术实现的:
JSON:JavaScript Object Notation,是一种基于文本(类似于 XML)、轻量级的数据交换格式。在 Web 应用中,可以使用 JSON 传输字符串、数字、二进制,或是数组、对象等等。由于它格式简单、容易理解、容易解析,是目前在 Ajax 应用中最为灵活的数据交换解决方案。
XMLHttpRequest 对象:是 XMLHTTP API 函数集的一个对象。该函数集在 Web 浏览器和服务器之间收发 XML 或其它数据。一个由 XMLHttpRequest 对象发送的 HTTP 请求并不要求页面中拥有或返回一个< form >元素,这意味着该对象的 send() 方法可以立即返回,从而让 Web 页面上的其它 HTML/JavaScript 元素继续由浏览器处理,而由服务器处理该 HTTP 请求并发送响应。通过这样的机制,实现动态更新页面部分元素,而无需传递整个页面的效果。它是当今 Ajax 和 Web2.0 应用的技术基础。
3.2.3 Ajax 非同源调用特征
在介绍 Ajax 调用之前,我们先来看看浏览器的"同源安全模型"。同源模型是客户端脚本运行的重要安全度量标准,它指的是来自于同一个"源"的脚本可以互相访问其方法和 属性,而拒绝非同"源"的访问。该模型的精髓是:它认为从任何站点装载的内容是不安全的,当被浏览器不太信任的脚本运行时,它们应该只被允许访问来自同一 站点的资源,而不是那些来自其它站点可能怀有恶意的资源。这里"源"包含了 Domain、Protocol 和 Port。当采用同源策略时,来自于 http://www.example.com/dir/page.html 页面的脚本 A,可以访问和使用来自 http://www.example.com/dir2/other.html 页面的脚本 B,因为两者在 Domain(www.example.com)、Protocol(http 协议)和 Port(默认为 80)上是一样的,被认为是同源;而脚本 A 不能访问 http://www.example.com:81/dir2/other.html 页面的脚本 C,因为他们不是同一个 Port,被认为非同源。
为什么要有同源的限制呢?这是浏览器提供的最为基础的安全保障之一。如果放开同源限制,黑客就可以通过引诱用户访问嵌入在自己恶意站点上的正 常应用(如用 Iframe 将银行登录页面嵌入到黑客的恶意应用中),当用户访问该应用时,攻击脚本就可以在不同源之间互访,窃取用户登录信息,或者跟踪用户的各种操作。
3.3 Ajax 应用安全隐患
虽然 Ajax 技术极大地推动了 Web2.0(如 Mushup 应用)的发展,但是由于上述讨论的 Ajax 特征(动态、异步、突破同源限制),给应用安全带来了隐患。
3.3.1 Ajax 和 XSS(跨站脚本攻击)
XSS 是目前发生频率最高的网络攻击手段之一,它是通过引诱用户执行恶意的 JavaScript 脚本(如引诱用户点击包含恶意脚本的链接),来达到窃取用户信息或者实现其它恶意行为的目的。正是由于 Web2.0 鼓励信息分享、信息交互和协作,用户就有了更多的机会去看、去修改他人的信息,比如通过 Wiki、Blog 或 SNS(Social Networking Service),从而创造了更多的 XSS 攻击机会。Web1.0 时代的 XSS,是作为服务器端 Web 应用安全隐患被广泛注意,由于 Ajax,它已经蔓延到客户端。现在的浏览器允许在 Web 页面运行时主动插入 HTML 代码(比如使用 innerHTML 属性),如果这些代码中包含恶意的 JavaScript,则会被浏览器立刻执行,带来安全隐患。
3.3.2 Ajax 和 CSRF(跨站请求伪造)
CSRF 中,攻击者在用户完全未察觉的情况下,代表用户发送请求。这可以通过引诱用户点击链接,或是将请求嵌入到 Image Tag 等 HTML 标记中,强迫用户发送。这里列举一个攻击场景:攻击者向用户发送一封电子邮件,邮件中包含一个银行链接请求,请求的目的是从用户的银行账户向攻击者账户进 行转账,用户使用该链接进入银行网站并进行了登录操作,该请求就会偕同用户 Cookie 信息自动发送给银行。如果银行网站仅把 Cookie 值当做验明用户身份的唯一手段,那么 Web 应用就认为该请求是合法的,转账操作立刻被执行。
在 Ajax 应用中,客户端和服务器的交互是通过 HTTP 协议实现的,如果站点安全保护措施不够强健,一旦 CSRF 成功,将会带来一系列隐患,如利用 Web-Mail 服务发送邮件、代表用户在 Blog 上写注释、在 SNS 中修改用户信息等等。
3.3.3 Ajax 和 DoS(拒绝服务攻击)
DoS 是通过某种手段让服务器资源耗尽,阻断正常用户访问的攻击方法。比如说向服务器提交大量请求,使服务器负荷过重。用户浏览器如果可以执行第三方 JavaScript,就会带来 DoS 攻击的可能性,因为第三方 JavaScript 逻辑中,很可能包含大量导致服务器资源耗尽的循环程序,所以允许大量 JavaScript 使用的 Ajax 应用中,DoS 攻击概率大大提高。
3.3.4 其它安全隐患
Mushup 应用通常是将任意第三方的 mushup 组件组合在一起,如果攻击者向 Mushup 应用提供了恶意的 mushup 组件,同时该应用没有提供足够的安全保护的话,用户和整个 Mushup 应用就面临着巨大的安全隐患。因为一个恶意的 mashup 组件可以向整个 Mushup 应用中注入恶意代码,从而触发多种攻击行为,包括 XSS、CSRF、DoS。如果该 Mushup 应用还提供服务器端的 Ajax 代理服务,由于 Ajax 代理突破了同源限制,恶意的客户端 mushup 组件就可以将用户的隐私发送到外部站点。
3.4 Flash/Flex 和 Web2.0
互联网从 1996 年引入了 Flash 技术后,通过动画和交互,极大的改变了 Web 页面的用户体验。2004 年 3 月,Macromedia 公司基于其专有的 Macromedia Flash 平台,发布了 Flex。它涵盖了支持 RIA(Rich Internet Applications)开发和部署的一系列技术。在 Web2.0 时代,越来越多的开发者使用 Flex 技术开发 Flash 应用,由此引入的安全隐患也不容忽视。
3.5 Flash 应用安全隐患
由于 Flash 支持全局变量,因此带来了很多安全隐患。只要攻击者控制了全局变量,那么他就可以实施多种攻击行为。
3.5.1 Cross-Site Flashing(跨站 Flash 攻击)
和 XSS 原理相似,不过 XSF 是通过向网站注入恶意的 Flash 程序来实施攻击。 由于 Web2.0 时代的应用复杂性(如 Mushup 应用),注入的恶意 Flash 不但可以攻击同源内的应用,还可能在非同源的各个组件中传播。
3.5.2 Cross-Site Scripting through Flash(通过 Flash 进行跨站脚本攻击)
该方法使用易受感染的 Flash 文件进行典型的 XSS 攻击。和 XSF 很相似,攻击的发生同样来源于对全局变量的引用,如将全局变量作为装入函数(如 getURL())的参数
攻击者使用恶意脚本,可能执行如下操作:
1、将用户的 Cookie 值发送给攻击者;
2、将用户的共享 Flash 对象发送给攻击者;
3、将可通过 DOM(如 URL、表单字段等)访问的信息发送给攻击者。
四、Web2.0 安全总结
从上面章节的分析可以看出,Web2.0 时代的应用安全,有着明显的特征,可以总结为如下两个方面:
由于新技术的引入,带来了新的安全隐患,如 XSF 攻击等;
很多 Web1.0 时代的安全隐患,出现了新的传播渠道,如 Ajax 应用,就提高了 XSS、CSRF、DoS等攻击的机会。
五、明鉴Web应用弱点扫描器如何应对 Web2.0 ?
Web2.0 新安全隐患应对策略
考虑到 Web2.0 时代的应用安全特点,明鉴Web应用弱点扫描器(Webscan)应用安全解决方案不仅加强了对原有 Web 安全隐患的诊断能力,还提供了针对新安全隐患的诊断和防御功能。
5.1 Flash 安全防御
WebScan 5.0(WebScan 标准版)提供了对 Flash 安全隐患的完整分析和测试。这包括:
1、将 Web 应用中的 Flash 代码解析为文本数据,从中收集链接,进行安全隐患分析;
2、播放应用中的 Flash 文件,动态发现仅通过解析发现不了的链接;
3、测试由 Adobe? Flex 应用程序发送的后台 AMF 协议消息。
图 1. 是在配置WebScan 扫描某 Web 应用时的 Flash 选项,用户可以根据需要选择如何处理应用中的 Flash。
图1.Webscan5.0中Flash配置选项
Webscan5.0提供多种专门针对 Flash 的测试用例,如允许Flash文件与任何HTML页面通信、允许访问任何域的Flash文件、允许Flash文件调用所有网络API、Flash文件源代码泄露等等。如图 2。
图2.Webscan5.0中Flash测试用例
5.2增强的 JavaScript 引擎
Web2.0 使 JavaScript 得到了充分的应用。WebScan 可以分析 Web 应用中的 JavaScript,并且在新版本中,通过不断改进对内存的占用,提高 JavaScript 分析的性能。
免责声明:本文仅代表作者个人观点,与世界朋友网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。