标题: 提高 Ajax 应用程序性能,避开 Web 服务漏洞 [打印本页] 作者: look_w 时间: 2018-8-5 11:20 标题: 提高 Ajax 应用程序性能,避开 Web 服务漏洞
简介在最近的 developerWorks 系列 中,我谈论了使用 SLA 保证的一些功能:保护多个 Web 服务、使用防火墙保护 Web 服务以及降低漏洞风险。尽管存在各种各样的性能和标准规范,我还是侧重讨论了生产商为客户提供高可用性服务的重要性。
本文将首先对 Asynchronous JavaScript + XML(Ajax)进行概述,提出一些漏洞问题、讨论 SLA 影响,然后解释为什么具有高效带宽的 Ajax 应用程序不能保证降低或消除漏洞风险。本文还介绍了一些提高 Ajax 应用程序性能并避开 Web 服务漏洞的方法。
由于 Ajax 通过 Internet 从浏览器应用程序转移到服务器门户,Ajax 应用程序将面临一些新的安全漏洞。本文介绍一些实用的建议,帮助您在避开 Web 服务漏洞的同时改善 Ajax 应用程序的性能。
Ajax 概述Ajax 通过将用户的浏览器体验(例如,企业对企业交易)转换为一个基于 XML 的 Web 服务门户(例如企业对消费者交易),实现了响应式和交互式 Web 服务。Ajax 使用的方法是在 Web 页面和服务器之间,通过 HTTP 协议构建一个额外的处理层。该层拦截来自用户的请求,然后在后台与服务器通信并异步获得所需的 HTTP 协议内容。服务器请求和响应不需要匹配用户操作,例如一个更新数据库记录的请求和一个更新成功的响应。
Web 服务漏洞让我们解决一些有关额外处理层的问题。由于它依赖 XML 作为请求和响应负载的内容类型,Ajax 增加需要传输的 XML 流量。当出现大量的请求和响应时,Ajax 应用程序会阻塞网络通信。而更严重的问题是,大量的通信会使 Ajax 应用程序受到 Web 服务漏洞的威胁。如果这些漏洞被人利用,应用程序或系统的性能将受到损害。 developerWorks Ajax 资源中心
请访问 ,这是有关 Ajax 编程模型信息的一站式中心,包括很多文章和教程、讨论论坛、blog、wiki、活动和新闻。任何 Ajax 的新信息都能在这里找到。
让我们看看四个漏洞实例:
过高的带宽
破损数据
频繁的小型 HTTP 请求
内存泄漏
过高的带宽文本格式的 XML 消息可能是二进制数据带宽量的两倍之多。传输 XML 消息所需的带宽越多,系统或应用程序用来执行其他任务的可用资源就越少。例如执行复杂算法来获取期望结果。过高的带宽可能导致由系统超载引起的性能减退。
破损数据过高的带宽将导致 Ajax 应用程序输出破损的数据,因为没有足够的资源生成干净的数据。这意味着 Web 服务门户(Ajax 应用程序属于其中的一部分)将把破损数据暴露给门户的其他部分,从而导致畸形消息和过度解析。如果威胁者利用了这个漏洞,则会引起浏览器崩溃。
频繁的小请求Ajax 的一个缺点就是允许您生成大量较小的请求,而不是一个大的 post-back。频繁的、较小的 HTTP 请求会加重后端服务器、负载均衡程序和防火墙的负担,结果是造成过高的带宽,最终导致性能降低。它们还会超出浏览器或较慢的网络连接的接受能力,从而导致网络性能瓶颈。
内存泄漏在一个典型的 Web 应用程序中,Web 页面经常重新加载,清除该页面的内存并开始一个干净的页面。使用 Ajax 时,等待 Web 服务门户呈现下一部分内容的时候不需要重新加载页面。使用 Ajax 可以在浏览器中保持一个单页面应用程序长达数天,这使内存或其它资源泄漏更加严重。过度的内存泄漏(以及过高的带宽和频繁的 HTTP 请求)可能会造成 Web 门户出现破损数据,增加了黑客从 Internet 中利用系统漏洞的风险。
风险评估对于上面的四个例子,您需要判断威胁方利用系统和服务器漏洞的风险级别以及对业务造成的影响。如果风险较高,需要使用一些保护措施提高 Ajax 应用程序的性能。其中一种保护是使用 SLA 保证增强服务正常运行时间可用性。
Service Level Agreement无论怎样修改 Ajax 代码来提高带宽效率,始终存在一些风险和漏洞,需要您进行监视并解决。部署高效带宽 Ajax 应用程序并不能保证 SLA 中的服务级别保持在或高于指定的性能阈值点(例如 99.9 或 99.999%)。在 Ajax 应用程序中,当应用程序通过 Internet 从浏览器应用程序转移到服务器门户时,它将更容易受到攻击,特别是用来构建 Web 服务以检测性能问题(例如包丢失)的 XML 部分。
您需要考虑三件事情来改善服务运行时间的可用性。首先,要提高 Ajax 应用程序性能,应该使用一些方法改善性能而不是优化带宽(例如 XML 内容过滤和 XML 加速)。其次,要保护 Ajax 应用程序,应该考虑 Web 安全标准,例如 WS-Security(WSS)、Application Vulnerability Description Language(AVDL)以及其他标准。第三,考虑将监视这些应用程序的通信量作为度量性能的一种工具。
改进 #1. 加速应用程序让我们查看以下这些可以加速 Ajax 应用程序的选项:
专门的硬件加速器
优化软件
消除代码冗余
XML 加速功能
解决互操作性问题
专门的硬件加速器用硬件加速器加速 XML 通信。如果不使用加速器,加密、复杂图形和语音识别算法会占用应用程序和相关资源,因为必须执行复杂的计算才能获得理想结果。加速器通常不用于服务器端脚本。一种替代方法是将硬件加速器和优化软件结合使用。
优化软件优化软件用于修改和压缩系统,这样应用程序执行速度更快或操作更少的内存存储量和其他资源。优化软件在便携电脑中耗电更少。要减少从服务器下载的体积和时间,需要两个步骤:
使用 ASP.Net 或 JavaScript 技术分析 Ajax 应用程序负荷。
根据负荷分析开发优化软件。
消除代码冗余消除代码冗余的一个例子是减少 Ajax 回调的数量以及每个回调的负荷。如果回调之间存在复杂的交互,请查找并消除冗余代码。另一个例子是将 Ajax 应用程序分成多个模块,然后合并功能类似的模块,从而减少冗余。
XML 加速功能取决于应用程序的复杂性,解析基于文本的大型 XML 文件产生了大量开销,这就抵销了使用硬件加速器和优化软件消除代码冗余带来的好处。基于文本的 XML Web 服务应用程序体积较大并且会逐渐膨胀,因此从网络、处理器和存储性能的角度来看,不具备良好的带宽效率。当使用大量的大型文件时,这些 Web 服务会阻塞网络通信,导致系统超载。
Web 服务性能的一个主要阻碍因素是与 XML 有关的网络和处理开销。因此,行业趋向于标准化 XML 的二进制编码模式,例如 XML-binary Optimized Packaging Specification(XOL)Package。如系列文章的 (关于在企业级 SOA 中处理 Web 服务)中所述,我讨论了这种包处理大型二进制文件的效率为何高于 XML 解析器处理基于文本的文件的效率。
解决互操作性问题不论 Ajax 应用程序如何优化,使用了哪些硬件加速器,如何降低或消除了代码冗余,您仍然需要解决互操作性问题。例如,当 Ajax 应用程序转换为企业无法控制的 Web 服务时,您要根据共享语义和合同义务确保它们在外部可以进行互操作。语义的错误理解(例如专有语义)和合同漏洞(多平台差异)会造成互操作性问题,例如将 Ajax 应用程序集成到遗留系统中。
改进 #2. Web 服务标准让我们看一些针对 Ajax 应用程序的 OASIS Web 服务标准(OASIS 表示 Organization for the Advancement of Structured Information Standards,由 International Open Standards Consortium 领导。参见 获得站点链接)。