基于AJAX的Web,2.0应用程序安全性分析
时间:2022-04-06 10:02:07 浏览次数:次
摘 要:AJAX是一种用于创建更好更快以及交互性更强的Web应用程序技术,一些大型视频类、社交类网站均应用AJAX技术去开发网站。自从社交网站受到蠕虫病毒攻击开始,人们越发关注基于AJAX开发的应用程序存在哪些安全性问题。本文主要介绍了AJAX技术的原理、分析了两类常见的安全性问题,对于这两类问题分别阐述了相应的防御方法。
关键词:AJAX;安全性问题;防御
中图分类号:TP393.08
Web 2.0这个术语是不断变化的代名词。越来越多的人使用网络从而促使网络技术飞速发展。如果说网络可以被视为一个平台的话,那么不断被开发的网页技术则可被看做是用来搜索网页的工具。这种变化对人文科学和社会行为都有着显著地影响。随着时间的流逝,为了满足社会和商业的需要,基于Web 2.0的应用程序取代了Web 1.0程序被广泛的应用起来。Web 2.0应用程序在网站的架构、信息来源和展现信息的方式都与以往不同。随着Web 2.0这个概念不断推动网络发展的同时,AJAX这个新技术孕育而生。AJAX框架技术最早被谷歌和微软应用,由于基于AJAX技术的应用程序不仅提升了用户体验,而且在很大程度上减少了网络流量,并减轻了服务器负载,很多商业网站、邮件服务类、博客首页都开始用AJAX技术去搭建网站。然而,随着基于AJAX技术应用程序的兴起,其安全性问题也得到了广泛的关注。
1 AJAX的含义
AJAX即Asynchronous JavaScript+XML,并不是一种新的技术而是基于现有的技术和环境进行重新组合。当Jesse James Garrett最早定义AJAX时就已经指出,AJAX包含了XHTML,XML,DOM,JAVASCRIPT and XMLHttpRequest,它利用现有的技术使得网页内容可以动态更新。在体验基于AJAX应用程序时,数据从网页服务器传输到浏览器然后在浏览器进行处理,然后通过HTML,XSLT或者JavaScript展现出来。与传统的HTTP网页相比,这种基于AJAX技术的数据传输和处理方式极大的提高了网页的动态交互、丰富了用户的体验,用户不再需要为了更新页面数据而去更新整个网页。
2 安全性问题
当AJAX技术框架在操作和性能上给应用程序带来巨大优势的同时,也带来了一些安全方面的问题,而这些安全问题常常容易被我们所忽视。同时,一些安全性问题对于传统的应用程序而言并不严重,但是对于基于AJAX技术的应用程序而言却会因为AJAX自身的特点带来严重的后果。
对于网页应用程序而言,安全问题主要来自于恶意代码的威胁。因此,以下主要介绍脚本攻击和跨域发送请求这两方面的安全问题。除此之外,潜在的SQL注入问题在AJAX应用程序中也是一种常见的安全性问题,但是这类问题已经被有效的解决了,本文将不做阐述。
2.1 脚本安全问题。XSS又叫Cross Site Script,跨站脚本攻击。在AJAX应用程序中,是最常见的一种脚本攻击。跨站脚本攻击并不是一种新的攻击方式,但是在过去的几年当中经常被人们所忽视。在一个传统的网页应用程序中,跨站脚本攻击主要通过偷取cookie和会话劫持两种方式实现,当用户刷新网页时跨站脚本攻击就会被触发。对于传统应用程序而言这并不是什么很严重的问题。但是在AJAX应用程序中,由于网页是通过JavaScript控制的,这种基于AJAX的应用程序无需通过用户可以直接向网页服务器发送HTTP请求。因此跨站脚本攻击对于AJAX程序而言威胁要更大。
XSS通常是指黑客将恶意的HTML代码插入到网页中,当用户浏览网页时被嵌入的恶意代码会被激活。跨站脚本攻击流程如下图所示:
由于网页服务器对于用户输入的字段没有进行严格的检查和过滤,因此AJAX应用程序很容易遭受跨站脚本的攻击。对于基于Ajax应用程序的客户端脚本,JavaScript脚本本身可以创建HTTP请求并且请求的格式和用户在浏览器操作的是相同的。因此,网络服务器无法区分请求是来自于用户的操作还是来自于恶意的JavaScript创建的XMLHTTPRequest对象。
2.2 跨域发送请求安全问题。通常有四种方式来实现跨域操作:(1)通过Flash来实现跨域;(2)使用Javascript动态生成的<script>标记实现跨域;(3)使用Javascript动态生成的隐藏表单实现跨域;(4)通过不受限制的Ajax Bridge技术实现跨域。
对于一个普通的网页来说,其最常见的操作是用POST方法在网页中创建一个网页表单标签对象,然后用SUBMIT方法发送请求。然而在AJAX应用程序中,AJAX蠕虫可以伪装成一个普通的网页,利用Javascript的createElement功能动态生成一个隐藏的表单标记,然后通过调用document.form.submit方法去触发隐藏表单请求。黑客通常利用createElement方法去写一个表单去进行攻击。这种跨域攻击的流程如下图所示:
3 防御方法分析
3.1 跨站脚本攻击防御分析。为了使基于AJAX技术的应用程序免受一些恶意请求的攻击,最常见的一种防御方式是在用户登录网页或者有请求访问网页时要求输入验证码。通过这种方式,一些恶意请求就无法访问网页。然后这种防御方式也有其相应的缺陷,虽然利用输入验证码的方式可以防御一些自动的跨站脚本攻击,但是一些黑客总是可以通过先注册网页,输入验证码后进入网页程序而后进行手动攻击。
另一种有效的防御方式可以通过添加一些过滤器来验证输入的CSS代码是否是恶意代码。这种方式在很多时候都是很有效的,但是同样有其相应的弱点,当输入的CSS代码不包含expression,implode and javascript这三个代码时,防御则会失效。
3.2 跨域攻击防御分析。考虑到JavaScript通常会模仿一个普通的页面来发送请求,开发人员在设计基于AJAX技术的网页应用程序时,可以在服务器端的Session中设置一个token,然后在客户端中的cookie中设置一个同样的token。对于所有访问程序的请求,服务器端的代码会检查服务器端session的token是否和客户端的一样。如果两个token不一致,请求将被拒绝。通过这种方式可以有效的防御跨域攻击问题。
4 结束语
本文从介绍传统的HTTP应用程序和基于AJAX程序的区别为切入点,介绍了AJAX技术带给我们的好处,然后对AJAX程序中存在的两类主要安全问题以及相应的攻击原理进行了解释说明,在本文的最后针对这两类安全问题推荐了一些防御方法,以供读者及相关研究学者借鉴。
参考文献:
[1]赖尔(美).苏金国,译.Head First Ajax(中文版)[M].北京:中国电力出版社,2010.
[2]高博.PHP+MySQL+AJAX Web开发给力起飞[M].北京:电子工业出版社,2011.
[3]周爱民.JavaScript语言精髓与编程实践[M].北京:电子工业出版社,2012.
作者单位:交通运输部科学研究院,北京 100029;中交公路规划设计院有限公司,北京 100010
- 上一篇:局域网网络维护和安全管理
- 下一篇:谁来为全球信息不安埋单