由于受到Web 2.0利益的推动,AJAX(同步JavaScript技术和XML)正吸引着全球企业的眼球。
AJAX是逐渐普及的一个主要原因是其所使用的脚本语言,即JavaScript,它可带来许多利益:动态表单可包含内置的错误检查,页面计算区域,动态更改背景、文本颜色或按钮、读取URL历史并针对其采取行动,并可根据用户的请求提供不同的文档或部分等等。
不过,AJAX并不是一项技术,它是多种技术的集合,每一个技术在设计和开发和设计Web应用程序时都提供了强健的基础。
AJAX意在增强交互性、速度和可用性。这些技术为用户提供了更加丰富和友好的体验,因为Web应用程序的设计目的是为了模仿传统的桌面应用程序,包括Google Docs、Google Maps、Yahoo! Mail等。
在一个Web会话的开始,并非装载所请求的Web页面,而是加载一个用JavaScript编写的AJAX引擎。这个引擎充当了一个“中间人”的作用,它驻于用户和Web服务器之间,既作为一个翻译界面,又作为客户端浏览器和服务器之间的一种通信方式。
这种功能带来的不同之处是显而易见的。在向一个Web服务器发送一个请求时,我们会注意到网页的各个独立部件是分别更新的(异步),这样就不需要等待整个网页加载(同步)成为活动状态。
当然,AJAX编码的应用程序包括的好处还有很多,如插入和删除记录,编辑范畴树等,通过这些益处,就可以更有效地执行而不需要每次都请求全部的HTML页面。但我们还要看到:
AJAX的漏洞和弱点
虽然包含着极强大的技术集合,开发人员必须清楚潜在的安全漏洞和由此对AJAX应用程序所造成的损害。
Web应用程序是当今一个组织的IT架构中最薄弱的因素之一。越来越多的组织(赢利性的或非赢利性的)依靠基于互联网的AJAX应用程序。随着这种技术集合越来越复杂,如果一个组织并没有采取措施保护其Web应用程序的安全,那么其安全风险就会大大增加。
一个Web应用程序内部增加交互性意味着XML、文本和一般的HTML网络通信的增加。这会导致暴露后端的应用程序的可能,这些应用程序以前可能并不易受到攻击;或者如果没有足够的服务器端的保护,这就会给未授权的用户操纵其特权配置的可能性。
有一种常见的误解认为, AJAX应用程序更安全,因为有人认为一个用户在没有基于AJAX web网页的情况下是不能访问服务器端的脚本的。基于XML HTTP 请求的Web应用程序使服务器端的脚本模糊不清,这种模糊性给Web站点的开发人员和所有者一种安全感的假象。模糊性并非安全性。因为XML HTTP请求通过将同样的协议用作Web上的所有其它对象而发挥作用,从技术上讲,基于AJAX的Web应用程序与“正常”的应用程序一样也易于受到同样的黑客技术的攻击。
另外,在会话管理方面的漏洞也有所增加,并且可以获取对许多隐藏性URL访问权的黑客所造成的风险更大,而这些URL对于AJAX请求来说是必须要处理的。
AJAX的另外一个弱点是表达服务器请求的过程。AJAX引擎用JavaScript来获取用户命令并将其转化为功能调用。这种功能调用是以纯文本形式发送到服务器端的,有可能轻易地泄漏数据库表的字段,如合法产品和用户ID等,甚至是重要的变量名、合法的数据类型或范围,以及任何其它有可能被黑客所操纵的一些参数。
通过这种信息,一个黑客就可以轻易地通过欺骗手段将特定的HTTP请求直接发送到服务器从而使用AJAX函数。在跨站脚本攻击中,恶意注入的脚本实际上可以利用AJAX所提供的功能来按照其利益工作,从而用其最终目的(重新定向浏览器即所谓的网络钓鱼,或监视其通信)来欺诈用户。
JavaScript漏洞
虽然许多网站将其交互特性归结为JavaScript,这种技术的广泛使用却带来了几个严重的安全问题。
在过去,这些安全问题源于针对邮件系统的蠕虫或利用易受攻击网站的跨站脚本漏洞。这种自我传播的蠕虫可以使代码被注入到Web站点中,其目的在于由Web浏览器或电子邮件客户端执行或解析,用以操纵或简单地重新检索用户数据。
随着Web浏览器及其技术特性继续演进发展,那些利用老的安全问题并创建了新的安全问题(与JS和AJAX有关)的恶意利用也水涨船高。这种技术的发展发生在这样一个时间:黑客们的最终目标从故意破坏转而进行公司数据的窃取(如客户信用卡细节),由此会在“黑市”上产生巨大的经济回报。
XSS蠕虫将会日益智能化并能够执行毁坏性攻击,例如,非常普遍的网络拒绝服务攻击,垃圾邮件和电子邮件攻击,以及更多的浏览器漏洞利用。近来还发现有可能利用JavaScript映射内部的和公司的网络,这就会使得网络中的任何设备(打印服务器、路由器、存储设备等)易于受到攻击。
最终,这种复杂的攻击将会促使我们查明特定的插入恶意JavaScript的网络资源,或者任何可被公共使用和返回数据的AJAX应用程序。
到目前为止,我们发现多数可用的Web扫描工具都存在着严重的安全问题,这些问题是在审核拥有着嵌入JavaScript的Web页面发生的。
结论
Web技术的进步允许Web应用程序更有效率,拥有更强的响应性能和交互性,不过,这种进步也增加了企业和Web开发人员每天所面临的威胁。
由于80号端口(HTTP)和443号端口(HTTPS)总是打开着,允许动态的内容传递和交换,那么Web站点就处于数据被窃取和毁损的持续风险中,除非这些站点通过一种可靠的Web应用程序扫描工具进行定期的审核。随着技术的复杂性日益增加,Web站点的弱点将会越来越明显,而其漏洞将会越来越严重。
AJAXye应用程序的出现引起严重的安全问题,这是由同样的技术及其复杂性所造成的。我们应当清醒地看到,由于在脚本执行上增强和在服务器/客户端的信息交换请求的变化,黑客们拥有了更多的机会来窃取数据,从而会花费企业大量的金钱,并丧失客户信任,对组织的声誉和可信度造成负面影响。
对有效安全审核的唯一方案在于一个可靠的漏洞扫描工具,它应当可以自动地扫描站点以确认弱点。不过,如果没有一个可以解析和执行JavaScript的引擎,这种扫描将是不准确的并会给Web站点的所有者一个错误的安全感觉。