中国[选择]使用条款dW全全全全文档选项打印本页将此页作为电子邮件发送首页产品服务与解决方案支持与下载个性化服务developerWorks中国本文内容包括:1.什么是Web2.0?2.Web2.0部分技术浅析3.Web2.0安全总结4.Rational如何应对Web2.0?5.小结参考资料关于作者对本文的评价相关链接:Rational技术文档库RationalEdge电子月刊中文版developerWorks中国RationalWeb2.0应用安全深入解析:企业级Web2.0应用安全解决方案赵静,技术顾问,IBM2009年8月27日什么是Web2.0?它包含了哪些技术?这些技术的产生又对网络应用安全带来了哪些隐患和风险?本文从这些问题着手,重点探讨Web2.0时代的技术特征和应用安全,并通过结合Rational安全解决方案,为大家提供面对新时代、新问题的应用安全应对思路。什么是Web2.0?它包含了哪些技术?这些技术的产生又对网络应用安全带来了哪些隐患和风险?本文从这些问题着手,重点探讨Web2.0时代的技术特征和应用安全,并通过结合Rational安全解决方案,为大家提供面对新时代、新问题的应用安全应对思路。1.什么是Web2.0?互联网技术在不断发展,从传统的、以获取信息为主的Web应用(如各大企业门户网站),到目前被广大网民喜爱的Blog、Wiki等,一种变革正在悄然形成。这种变革,不但改变了我们对Web应用的体验,也正在渐渐改变我们的生活方式。这就是Web2.0。在Web应用早期,我们是从浩瀚的互联网数据中,自己去寻找感兴趣的、由网站开发者提供的静态信息;而在Web2.0时代,我们自己就是信息的构建者,通过人与人的互动而产生出创造性的内容,这些内容再被更多的人管理和使用。那么,究竟什么是Web2.0呢?业界对此并没有一个标准定义。我们可以通过以下认同最高的描述,体会Web2.0的真谛。“Web2.0并不是一个技术标准,不过它包含了技术架构及应用软件。它的特点是鼓励作为信息最终利用者通过分享,使得可供分享的资源变得更丰盛;相反的,过去的各种网上分享方式则显得支离破碎。”(引自维基百科)“将纷繁芜杂的Web2.0现象放置于科技发展与社会变革的大视野,Web2.0可以说是信息通讯技术引发信息革命、知识社会所带来的面向未来、以人为本的创新2.0模式在互联网领域的典型体现,是由专业人员织网到所有用户参与织网的创新民主化进程的生动注释。”(引自维基百科)从上面的描述可以看出,Web2.0是一种新现象、新概念、新思维方式,而并不是新的技术标准。不同的角色,感受的是Web2.0的不同气息:对于研究网络技术的人员而言,Web2.0像是一组名词、一些新社会软件的合成体,比如说SocialNetworking、Blog、Wiki、Ajax、Mashup等;对于经常在互联网上交流和分享的网民来说,Web2.0则提供了更为自由、便捷的信息互动手段,他们借助Blog、Wiki等,和有着共同爱好的人们交换思想、分享内容;而对于商人们而言,Web2.0则是新业务模式、新行业游戏规则的转变。新模式下,以往在门户网站上购买广告条,期待茫茫人海中出现感兴趣的鱼儿的被动现象,可以转变为针对有着不同兴趣爱好的社会网络群体,投放不同分类广告的主动局面,甚至可以主动收集人们的网络使用习惯、偏好等,推出完全不同的个性化服务。这些转变,也相应引出了“Blog营销”、“长尾现象”等新经济模式。对于更为深入的理解Web2.0,TimO'Reilly的七条原则会更有帮助些。1、将Web作为平台2、驾驭群体智慧3、数据将变成未来的“IntelInside”4、软件不断发行与升级的循环将会终结5、轻量型程序设计模型6、软件运行将跨越单一设备回页首7、丰富的用户体验详细描述,请参考网址:。结合这七条原则,我们可以更清楚的理解图1所示的Web1.0和Web2.0主要特性比较。其中,Web2.0“复杂&异步”的特点,我们会在后面的技术章节中涉及到。图1.Web1.0和Web2.0比较下面我们举一些Web2.0的例子:1.社会网络(SocialNetworking):也叫做虚拟社区,是一群有着共同兴趣的人组成的大众网络。这些兴趣可以是任何类型,比如说健康状况类似、拥有同一款汽车、都购买了IBM产品,等等。如Facebook(),就是一个著名的社会网络服务网站。2.Wiki:一种网站,允许用户方便的添加、删除或者编辑网站上的内容,有时甚至无需注册。这种便捷的交互操作使其立刻成为共享群体智慧的有效工具。业界有很多著名的Wiki网站,如维基百科(),IBM在内部也开放了WikiCentral。本文有部分信息来自于这两个站点。3.Mushup:中文是混搭的意思,也有翻译为聚集。指整合网络上多个资料来源或功能,以创造新服务的网络应用程序。“混搭”一词源自于流行音乐将两种不同风格的音乐混合,以产生新趣味的作法。Google开放了其GoogleMaps的API,因此诞生了很多以此为Mushup的应用,如Twittervision(beta.twittervision.com),就是将GoogleMap和Twitter功能混搭,制造出在全球地图上,不同区域的人们互发消息的有趣应用。2.Web2.0部分技术浅析Web2.0中涉及了很多名词和术语,比如Tags、Blogs、Ajax、Flex、MalWare、Wiki、RSS、SocialNetworking、Podcast、Mushup等等。由于篇幅所限,我们仅在本章节分析Ajax、Flex,同时,还将涉及越来越受到关注的MalWare。2.1Ajax和Web2.0Ajax全称为“AsynchronousJavaScriptandXML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。如图2所示,在Web1.0时代中,客户端浏览器和服务器之间的通讯是同步的,也就是说,当我们在Web页面上填写表单(例如使用搜索功能),请求就会发送到服务器上,经过处理后,服务器将完整的结果页面再次发送回来。可以看出,发送请求的前后两个页面,很多内容是完全重复的。这种做法的反复执行,极大的浪费了网络带宽,也浪费了使用者很多等待多余信息的宝贵时间。图2.Web1.0的通讯模式Ajax应用则可以和服务器通讯更改过的内容。它借助于客户端的JavaScript处理来自服务器的响应。同时,还有很多任务是由客户端本身来完成。因此,在网络上的数据交换更少、Web服务器的处理时间更短。用户感觉到的是更快的请求响应速度。如图3所示。注意,图中的数据刷新替代了传统Web应用的页面刷新。图3.Ajax应用的通讯模式由于Ajax良好的用户体验,被认为是Web2.0的典型技术特征,已经在很多成熟应用中被广泛采纳,如大家熟悉的Google地图、Google搜索建议、Gmail等。要了解更多Ajax信息,请访问技术特征2.2.1Ajax动态特征Ajax是构建在DHTML(动态HTML)技术之上的,这包括:JavaScript:在Web应用客户端广泛使用的脚本语言;DOM:DocumentObjectModel,文档对象模型,用来代表HTML或XML文档的标准对象模型,当前浏览器都支持DOM并且允许JavaScript代码使用DOM来动态修改HTML内容;CSS:CascadingStyleSheets,级联样式表,是一种用来描述HTML文档展现的样式表语言,JavaScript可以在访问Web页面时动态修改CSS。通过这些动态技术,在Ajax应用中,客户端JavaScript通过动态修改DOM树结构和CSS,实现了动态的更新Web页面。2.2.2Ajax异步通讯特征前面提到,Ajax可以和服务器交换更改过的、而非整个页面的内容。这种异步通讯,是通过如下技术实现的:JSON:JavaScriptObjectNotation,是一种基于文本(类似于XML)、轻量级的数据交换格式。在Web应用中,可以使用JSON传输字符串、数字、二进制,或是数组、对象等等。由于它格式简单、容易理解、容易解析,是目前在Ajax应用中最为灵活的数据交换解决方案。XMLHttpRequest对象:是XMLHTTPAPI函数集的一个对象。该函数集在Web浏览器和服务器之间收发XML或其它数据。一个由XMLHttpRequest对象发送的HTTP请求并不要求页面中拥有或返回一个<form>元素,这意味着该对象的send()方法可以立即返回,从而让Web页面上的其它HTML/JavaScript元素继续由浏览器处理,而由服务器处理该HTTP请求并发送响应。通过这样的机制,实现动态更新页面部分元素,而无需传递整个页面的效果。它是当今Ajax和Web2.0应用的技术基础。2.2.3Ajax非同源调用特征在介绍Ajax调用之前,我们先来看看浏览器的“同源安全模型”。同源模型是客户端脚本运行的重要安全度量标准,它指的是来自于同一个“源”的脚本可以互相访问其方法和属性,而拒绝非同“源”的访问。该模型的精髓是:它认为从任何站点装载的内容是不安全的,当被浏览器不太信任的脚本运行时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。这里“源”包含了Domain、Protocol和Port。如表1所示,当采用同源策略时,来自于页面的脚本A,可以访问和使用来自页面的脚本B,因为两者在Domain()、Protocol(http协议)和Port(默认为80)上是一样的,被认为是同源;而脚本A不能访问页面的脚本C,因为他们不是同一个Port,被认为非同源。为什么要有同源的限制呢?这是浏览器提供的最为基础的安全保障之一。如果放开同源限制,黑客就可以通过引诱用户访问嵌入在自己恶意站点上的正常应用(如用Iframe将银行登录页面嵌入到黑客的恶意应用中),当用户访问该应用时,攻击脚本就可以在不同源之间互访,窃取用户登录信息,或者跟踪用户的各种操作。表1浏览器的同源模型举例用来比较的URL结果原因成功相同的协议和主机成功相同的协议和主机失败相同的协议和主机,端口不同失败不同的协议失败不同的主机失败不同的主机(需要精确匹配的场景)失败不同的主机(需要精确匹配的场景)再回到Ajax调用问题上。Ajax可以通过如下方法被调用:XMLHttpRequest对象:该对象受限于同源安全模型;Script标记:通过和JSON的结合,可以绕过同源模型,从不同域中获取信息;浏览器扩展和插件:目前的浏览器都遵循同源模型,但是部分浏览器通过plugin实现跨域访问,如FireFox的插件GreaseMonkey,它提供了API(GM_XMLHttpRequest),是不受