技术开发 频道

四款工具帮你解决AJAX安全难题


【IT168 专稿】

    每一种新的Web技术都不可避免的遭遇安全问题,Ajax也不例外。Ajax即时数据反馈的特点实现了良好的用户交互,使得IT建筑师们通过基于Web的应用程序来改变用户访问和交互公共数据的方式。

    但是Ajax技术同时也对IT企业带来了新的安全威胁,Ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。

    Ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有Ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于credentials的安全漏洞等。

     为了发现Ajax应用所带来的安全威胁,并给出解决办法,我们可以分析Web应用程序开发生命周期的不同阶段和不同方面,进而选择特定的安全工具来帮助我们提高基于Ajax的应用的安全性。通过使用这些产品,开发者可以显著的减少Ajax安全缺陷,并使得任何安全漏洞尽在我们掌握之中。

来自CENZIC的HAILSTORM

     发现Ajax安全缺陷的一个方法是借助于安全测试应用软件。这一方面,Cenzic的Hailstorm可以针对基于Ajax的Web应用程序进行精确动作分析。Hailstorm可以自动模拟某些最复杂的基于流的攻击,让开发者看到真实世界的黑客是如何攻入他们的Web应用程序并窃取安全数据的。

     Hailstorm使开发者可以实时检查所有安全缺陷,以了解某些注入攻击代码如何被执行以及被攻击的目标Web应用如何响应。Hailstorm还从不同的技术角度来提供建议来修正代码。不过由于Web应用技术如此不同,Hailstorm只是给出了通用的修补建议,而不提供具体的修正代码。

    根据Cenzic,当Ajax应用程序发出服务器请求时出现的两个主要安全弱点是:输入确认(诸如SQL和脚本注入)和授权。对开发者的关键挑战是要防止来自注入攻击的反馈信息。

    例如,当发出HTTP请求后,提交的参数被连接符号&分开,这使得黑客可以根据参数来查看服务器的响应。黑客可以创建定制的HTTP头,通过插入调用函数,服务器端就会运行恶意脚本。通过Hailstorm,开发者能够识别存在于HTTP头内的注入代码的安全缺陷。

     Hailstorm还可以检查任何基于提交数据的注入攻击。对于有安全弱点的HTTP头,Hailstorm可以产生跨站点脚步攻击和SQL注入攻击来测试服务器请求和脚本执行。Hailstorm可以在HTTP头中插入空函数来看页面结构是否能被恶意函数改变。为了得到XML节点的信息和被调用的函数,黑客们通常喜欢使用空函数来接收来自服务器的信息。
    由于Ajax请求通常是基于XMLHTTP协议的,开发者可以动态的改变提交数据的架构,以提供从Web应用到客户端浏览器的即时Ajax数据结果。但是这个功能也可以被利用。例如假如黑客可以改变任何函数的话,他们可以在页面上放一个类似弹出窗口类的垃圾信息。

    观察攻击Ajax请求的非常好的时间也是非常重要的,因为不是所有的Ajax方法调用都是有用的。在页面加载的时候,对页面所做的Ajax改变需要按照服务器端模块或内部终端用户的响应来进行,因为Ajax请求是一个中间请求。

    内部终端用户的例子是那些需要计算来自银行或其他金融机构的表格的人们。为了测定那些Ajax请求会导致什么情况,Hailstorm在服务器端利用一个浏览器来跟踪内部用户的基于事件的响应,并跟踪那些请求一直到客户浏览器的页面加载。

    举例来说,对表格数据执行了Ajax注入后,Hailstorm用户可以分析响应数据大小。假若内部用户点击了一个来自基于Ajax的SQL注入产生的JavaScript弹出窗口后,从Web应用中得来的数据会产生一个安全漏洞,使得黑客可以查看财政数据的表格。Hailstorm输出可以在页面加载的时候测定特定的产生这个漏洞的实例,方法是给每一个交易打上一个水印标识。这个功能可以模仿黑客实际所采取的做法,从而提供一个状态评估来维护Web应用的状态。

    来自Web应用安全公司SPI DYNAMICS的检测软件

    SPI DYNAMICS也提供一个非常复杂的应用程序安全测试解决方案。SPI DYNAMICS套件针对软件开发生命周期的每一个阶段提供工具,包含黑盒评测,代码检查、测试和所有结果的统一视图。

    对于黑盒测试,WebInspect工具提供高度交互的用户界面,来完成扫描和测试结果功能。WebInspect可以显示安全弱点结果,并在一个面板上显示跟踪扫描过程。用户可以编辑安全弱点session来得到单独扫描的结果,并产生定制的报告。

    策略管理器工具让终端用户在一个任务上设置多个扫描引擎,并设定哪一个扫描测试可以被执行。用户还可以生成定制的代理来跟踪测试代码。

    根据SPI Dynamics表示,只要开发者不能识别跨站点脚本和Web服务安全缺陷的话,这个Ajax应用就是有漏洞的。对于跨站点脚本攻击,WebInspect可以识别所有的假造的参数。

     因此,WebInspect的引擎可以在基于Ajax的JavaScript代码中产生多种字符组合,以识别哪一个应用程序可以被通过。从这些结果中,WebInspect描绘出如何实施一个跨站点脚步攻击。该工具还在产生该漏洞的页面上显示信息。

    另一个工具DevInspect使开发者通过特定代码关联在页面上发现的安全缺陷。DevInspect支持在VS 2005的IDE中执行源代码分析和黑盒测试,年底将增加对Eclipse的支持。这种混合的分析功能是SPI Dynamics所独有的。

    DevInspect也可以从注入结果中显示原先的HTTP请求。SPI Dynamics同样提供一个HTTP编辑器,他可以发送请求到Web服务器,来帮助开发者跟踪在服务器端发生了什么。这两款工具都还可以让开发者再次测试修补过的安全漏洞。开发者可以从攻击中取回结果,然后再次发送到Web服务器上。

    甚至对于强大的数据过滤和服务器端验证代码,DevInspect可以产生绕过这些程序的响应以实现代码渗透。DevInspect可以通过应用SQL注入攻击技术和识别输入验证威胁来检查Web服务安全缺陷。该工具还可以自动为开发者修补安全漏洞。

    到2007年第一季度,SPI Dynamics计划把WebInspect和DevInspect集成到他的评测管理平台(AMP)中,以覆盖整个应用开发生命周期。理想的话,AMP将能够关联和分析来自WebInspect和DevInspect的数据,这样不同的开发人员可以分享分析结果。
来自FINJAN的VITAL SECURITY APPLIANCE


    在安全厂商Finjan看来,Ajax就如同一个隐藏的Web,因为他的请求可以调用服务器端的代码而不在浏览器端有任何显示。基于Ajax的应用也可以查询Web服务,从而使黑客发起悄悄的工具。

    Finjan的Vital Security Appliance提供了最完整的基于浏览器活动的安全审核功能,Finjan的宗旨是不要相信进入浏览器的来自任何来源的任何代码,因此该软件可以保持任何来自客户的对任何站点更改的警惕性。

    Vital Security Appliance加强终端用户的安全,通过提供一个在浏览器和外部Web服务器之间的入口。Finjan还提供反间谍软件和反病毒功能的扫描器、URL分类顾虑、内容类型探测和内容处理等工具。

    Finjan的专利行为分析引擎可以迅速截获通过浏览器的代码,并分析其安全漏洞。不管数据格式和应用程序的状态如何,只要该代码试图访问注册表、系统文件或打开其他网络连接,检测工具就会检测到。

    Finjan的检测工具可以跟踪经过编码、加密的代码。另外诸如文件删除、数据导出等操作也可以被识别和截获。Finjan的少有的分析技术可以只截获页面上的恶意脚步,而允许其他代码正常通过。该软件并不会阻挡页面加载,因为这会引起用户的不满。

    除了对基于HTTP的代码进行分析检测外,该Finjan的应用还可以对Ajax代码结构和Web服务输出进行监控,甚至包括SSL会话。几乎没有什么东西可以逃过Finjan的深度扫描工具。该软件甚至可以阻挡来自受感染的PC的木马攻击,来自网络的攻击同样也可以被屏蔽。

    由于Vital Security Appliance的工作原理是根据检查行为而不是特征,因此一旦该应用程序被放到具体的环境中后,可以做出自己的选择。一旦他发现新的漏洞,并不一定必须从Finjan公司的实验室得到反馈。
APACHE XAP

    为了增强下一代Ajax应用的安全性,今天的Ajax框架必须发现一个方法来从手写的客户端脚步中识别出已知的安全缺陷。Apache的新XAP框架就可以做到这一点。和大多数Ajax库不一样,XAP通过管理数据存取和以XML展现代码,可以产生安全的Ajax应用。

    XAP最初是由Nexaweb开发的,除了XAP外,Nexaweb提供了一个服务器端的平台,可以从SOA系统和数据库系统分发内容到基于Ajax和基于Java的客户端。现在大多数Nexaweb的客户主要使用基于Java的客户端来处理关键应用。因为通过Java的成熟的Swing API,开发者可以创建功能丰富的客户端应用。

    然而,XAP的独特的体系结构具有关键的优势,允许开发者使用XML来表示客户端代码,以及不需要任何客户端脚步就可以实现数据交互,这大大减少了可能产生安全缺陷的机会。

    XAP主要包含三个主要组件:用户界面、数据绑定层和插件程序。界面部分可以根据XML数据的描述产生丰富的用户界面。开发者只需要以XML格式描述用户界面就可以,XAP就可以自动产生HTML和JavaScript代码。开发者不用非要使用DOM API或CSS来产生图片,Nexaweb提供了一个针对Eclipse的可视插件,使得开发者可以通过拖拽图形元素来创建用户界面。

    XAP的Ajax安全模型在于其数据绑定部分中。通过数据绑定层,开发者可以表述如何连接到数据源。XAP引擎可以连接到任何服务器端的数据源或Web服务。开发者还可以使用数据绑定组件来绑定数据到用户界面中。这两个任务都不需要编码就可以完成。

    通过XAP引擎,开发针可以根据对每一个用户界面元素的描述,产生不同类型的数据绑定。例如,XAP支持单向和双向的数据绑定。由于XAP的JavaScript API来处理验证工作,开发者不用关心如何编写数据验证程序。

    XAP的插件体系可以与来自第三方的Ajax工具配合使用,因此开发者可以获得更大范围的功能和特性。插件体系使用了一种桥机制,可以把任何Ajax框架或工具转化成XAP可以读懂的XML形式。

    初次安装的时候,XAP提供了一个插件支持开源Dojo工具。XAP使用Dojo来实现图形表现和用户界面组件的开发。Dojo工作组目前正在开发矢量图形以改善他的用户界面表现能力。

http://www.informationweek.com/news/showArticle.jhtml?articleID=193001331&pgno=3&queryText=
0
相关文章