网络通信 频道

中小企业用Ajax风险:安全性并没有改善

  企业网络管理人员有一个非常重要的职责,就是对于企业内部的网络应用系统的规划与建设指导和监督实施。因此,当一个企业的网络信息系统面临全面或者局部的更新与改造的时候,企业网络管理人员既要负责甲方需求分析信息的搜集与整理,又要将掌握的信息与系统开发建设人员有效沟通,职责之重有目共睹。本文将对即将风行系统开发市场的Ajax技术应用中,企业网络管理人员将要面临的几个关键问题进行分析,并给出相应的问题分析及解决策略。

  Ajax技术的内涵与定义

  Ajax,一项足以影响人类未来网络环境的技术,对网络安全、网络性能问题都至关重要的新技术。究竟什么是Ajax,它究竟具有什么强大的功能,可以吸引众多Web应用技术人员眼球,成为目前网络开发领域最引人注目的新技术之一。

  Adaptive Path公司的Jesse James Garrett这样定义Ajax,他说,Ajax不是一种单一技术,它由几种蓬勃发展的技术组合。具体包含:

  1. 基于XHTML和CSS标准的表示;
  2. 使用Document Object Model进行动态显示和交互;
  3. 使用XMLHttpRequest与服务器进行异步通信;
  4. 使用JavaScript绑定一切。

  这个"不称为技术"的技术组合为什么要以Ajax命名呢?其实Ajax是由Jesse James Garrett创造的,它是"Asynchronous JavaScript and XML"的简写。应用Ajax组合技术创建Web站点时,可以在客户端执行屏幕更新,为用户提供很大的灵活性。

  任何一个新的网络技术的应用都会在某种程度上影响到网络框架结构的变化,从微观到宏观的各个领域都会发生变化。今天,Ajax这个具有更大冲击性的网络新技术出现了,从而为网络应用开发人员提供了新的选择。

  应用Ajax技术开发的Web应用系统与传统项目相比会增加开发投入,这是任何一个新技术的应用都会面临的现实。Ajax技术的推广阶段也会出现类似的问题。作为企业用户,增加了部分投入,是否给自己带来回报和补偿,往往是最为关心的问题。

  首先,采用了Ajax技术的Web应用系统可以从根本上加快网络访问的响应速度,增加信息流速,改善用户对企业网络服务项目的影响,间接给企业自身增加了在产品群客户中的印象得分,这种广告效应是难以估量其价格的。

  其次,Ajax是真正围绕JavaScript工作的,这顺应了最新的技术应用潮流。根据It168网站2007年底发表的《中国IT应用技术蓝皮书》中的统计数据可知,目前企业Web应用开发时,选择Java为开发平台的项目已经超过了C语言(含C++和C#)及.Net平台。Ajax选择JavaSctipt来完成系统的绑定,而且依靠XMLHttpRequest对象、World Wide Web Consortium进程来完成通讯,正如其他Web技术一样,目前Ajax只是一个特设的行业标准(ad hoc industry standard),具有与其它浏览器技术之间明显的不同之处,它很可能会使用一些基于Ajax应用的新的数据传输机制,这些新机制将区别于传统的框架和图像cookie方法,以及Flash和Java中使用的二进制桥。这些新机制的采用,将会使用户和开发人员都有物超所值的感觉。

  第三,Ajax采用的HTTP压缩有效减少了响应包的大小,而且Ajax技术应用将会从缓存的利用方面得到比压缩技术更大的便利。压缩技术在各种浏览器都得到了应用,但是由于动态压缩开销较大,尤其是小的数据包传输时压缩的效果不明显。这就意味着,网管人员打开自己服务器上的压缩功能是明智之举,尤其是使用Ajax应用的时候。但是与传统的Web应用相比,在传输效率的提高方面有时并不明显。为此,Ajax通过缓存利用有效地提高了包传输效率。

  Ajax技术已经在很多大型企业网站建设得到了应用,这与这些大型企业的经济实力不无关系。目前,广大的中小企业,尤其是我们中国国内的中小企业是否具备了推广Ajax技术的非常好的时机呢?假如推广Ajax技术将会面临哪些困难呢?又将如何解决这些困难呢?基于上述疑问笔者进行以下四个方面的分析。
  第一,中小企业开展Ajax应用已经具备了条件,但是必须注意该技术应用的特殊性。这就是需要开发人员注重网络开发的质量和JavaScript工具和框架及构件的安全性,通过严格的测试程序确保系统的完整性和同一性。

  第二,目前推广Ajax应用的主要困难在于提高网络管理人员的素质。

  (1)首先,仅仅了解XML是不够的。目前的网管人员大多具备了对XML的了解,但是仅仅靠XML是远远不能完全认识Ajax的。尽管Ajax中的"x"作为"XML"缩写,但是要真正认识Ajax,还要深入理解对象XMLHttpRequest,它可以传输任意格式的文本数据。对于许多Ajax开发人员来说,对于文档的直接输入,更倾向于阅读原始的文本格式或者HTML格式,还有很多其他很少人员使用和知道的YAML格式标记语言或者其他非流行格式。JavaScript是一个客户端环境,JavaScript的Object Notation甚或JavaScript的原始代码片段,会被赋予更多的数据格式含义。使用二进制格式作为上传格式还没有被XMLHttpRequest对象支持,但是考虑到Flash目前使用了一种二进制格式的文件.AMF(Action Message Format),这意味着Ajax应用中将会采用类似的数据格式。作为网络管理人员,应该知道网络传输中使用了什么格式的文件,因为这些文件不会都是XML格式的,而且,最好你能够学会分析这种数据格式,以便确保网络使用的性能和安全。然而,目前绝大多数网络管理人员还远远不具备上述基本素质。

  (2)还要了解Ajax对网络资源利用方面引起的变化。应用Ajax的时候,网络管理最明显的问题出于程序架构模式引起网络资源利用发生了变化,比如几百KB响应非常少,小信息量的HTTP占了多数。这就意味着边缘性的Web和应用服务比原来更加繁忙。Ajax究竟给服务器和网络资源利用带来哪些变化,将取决于应用是如何构建的,必须确保开发人员理解应用给网络带来的影响。

  第三,在推广Ajax技术方面,还有一个较大的困难来自于开发团队。

  (1)开发团队应该尽早研究中小企业实施Ajax技术的技术特点。比如,数据包的大小权重和频度权重,以及哪个因素更重要。Web应用中应该坚持网络交付的数据量尽量小、频率尽量低的原则。然而,原则的制定并不意味着原则得到了多数开发人员的遵循。值得庆幸的是,Ajax响应的HTTP压缩有效减少了响应包的大小,而且这种方法在各种浏览器都得到了应用。由于动态压缩开销较大,尤其是小的数据包传输时压缩的效果不明显。这就意味着,使用Ajax应用的时候网管人员打开自己服务器上的压缩功能是非常重要。在JavaScript中加入客户端Ajax缓存是目前一种可行的基于缓存的解决策略,因为Ajax技术的应用将会从缓存得到比压缩技术更大的便利。

  (2)了解Ajax通过排队算法对无序应答的优化处理。与传统Web开发技术相比,TCP/IP通讯的网络效应,比如对于收到的个人HTTP应答的无序性,通常没有得到开发人员和用户的重视。HTML文档作为基本的通讯单元,通常比其它对象收到得早些,继而触发需求。随后而至的其他需求触发整个文档的需求,这样就保障了整个过程有条不紊。Ajax放弃了这种潜在的规则,而在应用中依赖于一个排列好的响应队列。Ajax的框架目前还没有一个统一的模式,来规范采取的排队算法。Ajax的应用开发者应该对这种现状有所了解,以便有针对性地开发和应用适合具体应用特点的排队规则。

  (3)了解Ajax技术对服务器故障的处理策略。Ajax应用受到两个HTTP连接同时链接到一个相同URL的限制。这是HTTP协议所规定的,并不是通常所见的浏览器BUG或者局限。这种限制的好处是避免了很多Ajax的开发人员遭遇服务器的意外故障,尽管微软公司的IE8已经远远超出了同时出现两个链接的限制。使Ajax快速投入到应用领域会出现一些麻烦,一些浏览器的规则要随之发生些变化,网络管理员要密切关注需求的数量,并与应用开发人员一道完成系统的设计与实施,但是要尽量避免一些网上快速投票等需要长期连接的应用项目。

  (4)掌握Ajax技术快速响应用户需求的内涵。开发人员目前最为困惑的问题就是很多被访问数据库无法及时响应,仅仅告知因为超时信息传送失败,必须重新尝试登陆才能解决,服务器或数据传输过程出现了问题等等。多年来,用户一直通过网页的重载或回到上一步再次点击等方法来确保Web交付的质量。简而言之,用户这样做可以有助于减少网络故障带来的麻烦,因为错误往往出现在人们期望一个网页出现在面前的一瞬间。使用Ajax技术之后,这些应用经常出现的具体问题将会大量减少。但也存在一些问题,如用户通常并不知道错误产生的根源,仅仅从屏幕上要求等待的画面本身并不能了解更多的技术细节,而对自己发出的需求的当前状态和能否得到应有的响应就更是知之甚少了。JavaScript的诊断显示,上述问题的出现极少是因为客户端自身的原因造成的,事情发生的根源更是无法及时和准确地了解。开发团队说服管理层的人员多加关注Ajax的应用可能带来的新体验,则可以有效解决帮助用户方加深对问题根源的理解。

  第四、Ajax技术没有在安全性能方面取得突破。

  (1)各方专家认为,虽然Ajax在网络安全性能方面没有下降,但是Ajax可能给整个行业带来多方位的冲击。与传统的Web应用模式相比,它在安全性能方面并没有下降。这是因为HTTP输入到服务器端时使用了相同的头文件、特征串和信息体。如果通过了检测的客户端代码和输入的数据已经不被禁止,Ajax将会沿着前面设定的路线得到应用。

  (2)跨站点脚本语言XSS不是一个Ajax技术带来的新的攻击点,该脚本的使用在此之前已经常见,只是JavaScript出现之后,对该脚本语言的应用得到了广泛推广。HTML输入在多数情况下禁止使用,而且HTTP只有Cookies需要马上应用,以减少Cookie攻击和其它经由XSS产生的网络攻击。跨站点请求伪造技术在Ajax中没有明显变化,但是如果应用开发人员不检查HTTP Referer(sic)头文件,而且管理会议建议使用Ajax作为工具,你可能已经在着手应用Ajax技术了,尽管目前它还很不成熟。

  (3)黑客就像开发人员一样,目前越来越多的黑客钟情于JavaScript,使得系统潜在的漏洞越来越多。网络专业人员应该清楚,开发人员(含黑客)熟知客户端代码可以被远程操纵、或者被无端修改,因此输入的数据应该彻底过滤、消毒,Ajax可能还没有完善这类功能。

  (4)JavaScript的同源策略(SOP,same-origin policy)强化了基于XMLHttpRequest的Ajax应用中的安全策略。这个策略强调脚本语言不能在发行之外的领域应用。从开发者的观点来看,这个策略很烦人,这就意味着,比如,Ajaxref.com建立的页面不能在URL上显示。甚至在同一台机器上,也不属于一个作用域。DNS也不属于相同的领域,即使它是工作在SOP下的字符串检查手段。SOP在开发人员实现一些客户端Web应用方面会造成些麻烦,显然,最好的方法就是使用代理服务器完成对其他服务器的访问,并组合访问的结果形成客户端显示结果。然而,很多Ajax开发人员试图打破同源的限制,使用<script>标签完成传输,取代XMLHttpRequest对象可能带来的危险的信任假设,这导致了人们从整体上关注Ajax安全性的研究。

  结束语

  构件基于Ajax技术的Web应用系统可以使今日的企业网管和开发人员名噪一时。然而,在体验Ajax丰富的应用构件给你带来便利的同时,也应该认识到华丽的界面之后可能给你的应用埋下一定的隐患,这与JavaScript技术中兼容了很多第三方的构件有关。因此,一个借助了许多公共资源的具有丰富功能的Ajax项目,在提交之后往往有时会出现脆弱,对于不稳定的应用用户会很失望,即使使用Ajax编制的系统界面非常流畅,也很难保证系统的绝对安全。为了确保系统质量,网络专业人员一定要注意对Ajax的开发人员的专业培训,同时提供坚实的连续的对交付前平台的监测,并从用户的角度关注系统的整体性能。只有这样,企业的才能真正将Ajax技术引入到自我的业务流程之中,产生切实的经济和管理效益。

0
相关文章