CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [转贴] Web2.0十大Ajax安全漏洞以及成因
mz89757053
元老
Rank: 12Rank: 12Rank: 12



UID 304999
精华 0
积分 88056
帖子 5810
威望 41592
ZD币 7355 元
阅读权限 245
注册 2008-3-10
状态 离线
  楼主
发表于 2008-3-18 11:48  资料  个人空间  短消息  加为好友 
开发者在线

Web2.0十大Ajax安全漏洞以及成因

JavaScript包含的Ajax是Web2.0应用的一个重要组成部分。该部分的进化发展使网络变成了超级平台。该转变同时也催生了新品种的病毒和蠕虫,比如Yamanner,Samy   以及Spaceflash等等。Google,Netflix,Yahoo   以及MySpace等门户网站在过去的几个月里都因为新的漏洞而蒙受一定损失。黑客们可以利用这些漏洞进行钓鱼,跨站点脚本(XSS)以及跨站点伪造(XSRF)请求等攻击。     
   
    Ajax中没有固有的安全漏洞,但是对该技术向量的适配显著地改变了网络应用的开发途径以及方法论。以前,DCOM和CORBA组成核心中间件层的时候,将数据和对象序列化非常困难。Ajax使用简单的GET,POST或者SOAP调用,来转换XML,HTML,JS   Array,JSON,JS   Objects以及其他定制的对象;全部这些操作都不需要调用中间件层。Ajax的这种综合能力使应用服务器与浏览器之间的数据交换非常流畅。从服务器端传来的信息动态地被注入到当前的DOM相关环境,然后浏览器的DOM状态重置。在讲安全漏洞之前,我们先来看看促成Web2.0漏洞的关键因素。     
   
    多重分散的终端点以及隐藏调用——Web2.0应用与Web1.0的主要区别就是信息访问机制的区别。比起它的前身Web1.0,   Web2.0应用有数个Ajax终点。潜在的Ajax调用分散于整个浏览器页面,并且能够被各个事件分别调用。开发者恨难应付Ajax调用的这种分散性,并且由于这些调用是隐藏的,不那么明显,它还可能导致代码不规范。     
   
    认证混乱——输入和输出内容认证是应用的重要因素之一。Web2.0应用使用桥,mashups,还有反馈等等。很多情况下,它假定“另一方”(读取服务器端或者客户端代码)已经实现了认证,这种混乱就导致了双方都没有实现适当的认证控制。     
   
    不受信任的信息来源——Web2.0应用从很多不受信任的来源比如反馈,博客,搜索结果中获得信息。这些内容在提供给终端浏览器之前从来没有被认证,这就有可能引发跨站点攻击。黑客还有可能在浏览器中加载JavaScript,以便迫使浏览器发出跨域的调用并打开安全漏洞。那样的话,这些致命的漏洞就能被病毒和蠕虫利用。     
   
    数据序列化——浏览器可以调用Ajax来实施数据序列化。它可以获取JS   array,Objects,Feeds,XML文件,HTML   块以及JSON。如果这些序列块中的某一个被解析并修改了,黑客们就可以强迫浏览器执行恶意脚本。不受信任信息与数据序列化的结合,对终端用户的安全是致命的。     
   
    动态脚本构成和执行——Ajax会建立一个后端通道,从服务器获取数据,然后将它传送给DOM。实现这一点的必要条件就是动态地执行JavaScripts,以便随时更新DOM或者浏览器页面缓存的状态。Ajax通过调用定制的功能或者eval()功能。未经认证的内容或者使用不安全的调用,轻则导致会话内容泄露,重则迫使浏览器执行恶意内容等各种后果。     
   
    Web2.0应用可能因为上面提到的1个或多个失误而变得易受攻击。如果开发者不够审慎,没有花心思在安全管理上的话,那么服务器和浏览器端都会出现安全问题。以下是10个可能的安全漏洞的简要说明。     
   
    (1)畸形的JS对象序列     
   
    JavaScript支持面向对象编程(OOP)技术。它有很多不同的内置对象,也允许用户自己创建对象。使用者可以用new   object()   或者自己编辑如下代码来创建新的对象。     
   
   
    message   =   {   
    from   :   "john@example.com",   
    to   :   "jerry@victim.com",   
    subject   :   "I   am   fine",   
    body   :   "Long   message   here",   
    showsubject   :   function(){document.write(this.subject)}   
                 };   
      
   
    这是一个简单的消息对象,其中有2个字段需要电子邮件地址。我们可以使用Ajax来将该对象序列化并用JavaScript代码编译。程序员可以将它赋值到变量或者eval()。如果攻击者发送嵌入了脚本的恶意“主题”,那么读者就将成为跨站点脚本攻击的受害者。JS对象既包含数据也包含方法。对JS对象序列的不当使用将产生可以被诡计多端的注入代码利用的安全漏洞。     
   
    (2)JSON对注入     
   
    JavaScript对象符号(JSON)是一个简单而有效的少量数据交换格式,它包含对象,数组,Hash表,向量以及列表数据结构。JavaScript,   Python,   C,   C++,   C#   和Perl   languages都支持JSON。JSON序列在Web2.0应用中是个非常有效的交换机制。开发者频繁使用Ajax和JSON,获取并传送必要的信息给DOM。下面是个简单的带有不同的name值对的JSON对象:“bookmarks”对象。     
   
   
    {"bookmarks":[{"Link":"www.example.com","Desc":"Interesting   link"}]}   
      
   
    黑客们可以在Link或者Desc中注入恶意脚本。如果DOM和可执行程序被注入了,XSS目录也会被注入。这是使终端用户感染恶意内容的另一种方法。     
   
    (3)JS数组中毒     
   
    JS数组是另一个比较普遍的序列化对象。人们可以很容易地跨平台移植它,并且它在使用不同语言的结构中也很有效。感染一个JS数组可以扰乱整个DOM环境。黑客们可以在浏览器中使用简单的跨站点脚本攻击JS数组。下面是一个JS数组的例子:     
   
   
    new   Array(“Laptop”,   “Thinkpad”,   “T60”,   “Used”,   “900$”,   “It   is   great   and   I   have   used   it   for   2   years”)   
      
   
    该数组是从一个拍卖二手笔记本的网站传出来的。如果这个数组对象在服务器端没有被仔细处理,黑客就可以在最后字段中注入脚本。这种注入将危及浏览器安全并被攻击者利用。     
   
    (4)被修改的XML数据流     
   
    Ajax调用接受来自多个地址的XML。这些XML块来自运行在SOAP,REST或者XML-RPC的网络服务。这些网络服务是由从第三方的代理桥那里接收过来的。如果这些第三方XML数据流被攻击者修改过,那么攻击者就可能向其中注入恶意内容。     
   
    浏览器从它自带的XML解析器接收该数据流。该解析器容易受不同的XML炸弹的攻击。人们也可以在该数据流中注入脚本,这样就可以导致跨站点脚本攻击(XSS)。浏览器接收未经认证的XML数据流的话,这就会危及终端客户端的安全。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
 


操作系统 数据库 中间件 应用软件 管理软件 Web应用 AJAX Linux Web2.0 RIA 开源 SOA OSS SEO Vista SharePoint Windows Server Windows 2003 Windows 2008 IIS 动态语言 Windows IE7 Oracle Oracle11g office SQLServer Firefox Solaris Ubuntut 微软Google 资讯 博客 技术看板 英雄 图片 QQ 腾讯QQ 珊瑚虫QQ 金山上市 站点图 AJAX BI BPM CRM DNS Android SQL Server 2008 EAI Enterprise 2.0 ETL ERP Flash GPL3 Java j2me JavaEE LAMP mashups NTFS ODBC ODF OOP Outsourcing RIA RSS SOA UML Web2.0 Workflow XAML XML ZFS 备份 并发控制 并行计算 动态语言 多核计算 虚拟技术 CRM 数据仓库 虚拟化 Apollo Apache BizTalk DB2 Eclipse Excel Expression Flex3 Fedora7 Forefront FreeBSD Hibernate IE 7 IIS JavaFX JBoss Linspire live Maxthon Mobile 6.0 Mozilla MySQL office OneCare OpenOffice Solaris Oracle Oracle 11g SQL Server Opera Outlook Photoshop PostgreSQL PowerBuilder PowerShell Rational RHEL ROR Salesforce Server Core Solaris SugarCRM TFS Tomcat Ubuntut Vista VMWare VPC VSTS WCF WebLogic WPF Xandros Xen KDE GNOME 火狐浏览器 Gmail 邮箱 Exchange server AJAX BI BPM EAI ETL ERP CRM DNS Flash Java JavaEE j2me LAMP NTFS ODBC ODF OOP Outsourcing RIA RSS SOA SEO Web2.0 mash up Workflow XAML XML GPL 3协议 ZFS 备份 并行计算 多核 数据仓库 搜索 并发控制 并行计算 动态语言 虚拟化 虚拟技术 Enterprise Web2.0 软件技术资讯 操作系统 Windows Server 2008 Windows Server 2008专题 系统安全 IIS 虚拟机 Windows Linux 嵌入式操作系统 Vista专区 数据库/数据仓库 MySQL & PostgreSQL & Sybase Oracle 10g / 9i / 11g SQL SERVER DB2 中间件/SOA QQ2009下载 QQ QQ群 QQ炫铃 QQ视频 QQ好友 木马病毒 QQ2007 江民 瑞星 金山毒霸 协作办公 ODF/OOXML SharePoint office web应用 浏览器 SaaS/S+S Microsoft技术 操作系统软件数据库软件中间件软件

软件频道2008年3月精华 软件频道2008年2月精华 软件频道2008年1月精华 软件频道12月精华 软件频道11月精华 软件频道10月精华 软件频道9月精华 软件频道8月精华 软件频道7月精华 软件频道6月精华 软件频道5月精华 软件频道4月精华 软件频道3月精华 软件频道2月精华 软件频道1月精华


当前时区 GMT+8, 现在时间是 2008-10-7 07:07

  Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
Processed in 4.803482 second(s), 7 queries

清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版