摘 要:AJAX是一種用于創(chuàng)建更好更快以及交互性更強(qiáng)的Web應(yīng)用程序技術(shù),一些大型視頻類、社交類網(wǎng)站均應(yīng)用AJAX技術(shù)去開發(fā)網(wǎng)站。自從社交網(wǎng)站受到蠕蟲病毒攻擊開始,人們越發(fā)關(guān)注基于AJAX開發(fā)的應(yīng)用程序存在哪些安全性問題。本文主要介紹了AJAX技術(shù)的原理、分析了兩類常見的安全性問題,對于這兩類問題分別闡述了相應(yīng)的防御方法。
關(guān)鍵詞:AJAX;安全性問題;防御
中圖分類號(hào):TP393.08
Web 2.0這個(gè)術(shù)語是不斷變化的代名詞。越來越多的人使用網(wǎng)絡(luò)從而促使網(wǎng)絡(luò)技術(shù)飛速發(fā)展。如果說網(wǎng)絡(luò)可以被視為一個(gè)平臺(tái)的話,那么不斷被開發(fā)的網(wǎng)頁技術(shù)則可被看做是用來搜索網(wǎng)頁的工具。這種變化對人文科學(xué)和社會(huì)行為都有著顯著地影響。隨著時(shí)間的流逝,為了滿足社會(huì)和商業(yè)的需要,基于Web 2.0的應(yīng)用程序取代了Web 1.0程序被廣泛的應(yīng)用起來。Web 2.0應(yīng)用程序在網(wǎng)站的架構(gòu)、信息來源和展現(xiàn)信息的方式都與以往不同。隨著Web 2.0這個(gè)概念不斷推動(dòng)網(wǎng)絡(luò)發(fā)展的同時(shí),AJAX這個(gè)新技術(shù)孕育而生。AJAX框架技術(shù)最早被谷歌和微軟應(yīng)用,由于基于AJAX技術(shù)的應(yīng)用程序不僅提升了用戶體驗(yàn),而且在很大程度上減少了網(wǎng)絡(luò)流量,并減輕了服務(wù)器負(fù)載,很多商業(yè)網(wǎng)站、郵件服務(wù)類、博客首頁都開始用AJAX技術(shù)去搭建網(wǎng)站。然而,隨著基于AJAX技術(shù)應(yīng)用程序的興起,其安全性問題也得到了廣泛的關(guān)注。
1 AJAX的含義
AJAX即Asynchronous JavaScript+XML,并不是一種新的技術(shù)而是基于現(xiàn)有的技術(shù)和環(huán)境進(jìn)行重新組合。當(dāng)Jesse James Garrett最早定義AJAX時(shí)就已經(jīng)指出,AJAX包含了XHTML,XML,DOM,JAVASCRIPT and XMLHttpRequest,它利用現(xiàn)有的技術(shù)使得網(wǎng)頁內(nèi)容可以動(dòng)態(tài)更新。在體驗(yàn)基于AJAX應(yīng)用程序時(shí),數(shù)據(jù)從網(wǎng)頁服務(wù)器傳輸?shù)綖g覽器然后在瀏覽器進(jìn)行處理,然后通過HTML,XSLT或者JavaScript展現(xiàn)出來。與傳統(tǒng)的HTTP網(wǎng)頁相比,這種基于AJAX技術(shù)的數(shù)據(jù)傳輸和處理方式極大的提高了網(wǎng)頁的動(dòng)態(tài)交互、豐富了用戶的體驗(yàn),用戶不再需要為了更新頁面數(shù)據(jù)而去更新整個(gè)網(wǎng)頁。
2 安全性問題
當(dāng)AJAX技術(shù)框架在操作和性能上給應(yīng)用程序帶來巨大優(yōu)勢的同時(shí),也帶來了一些安全方面的問題,而這些安全問題常常容易被我們所忽視。同時(shí),一些安全性問題對于傳統(tǒng)的應(yīng)用程序而言并不嚴(yán)重,但是對于基于AJAX技術(shù)的應(yīng)用程序而言卻會(huì)因?yàn)锳JAX自身的特點(diǎn)帶來嚴(yán)重的后果。
對于網(wǎng)頁應(yīng)用程序而言,安全問題主要來自于惡意代碼的威脅。因此,以下主要介紹腳本攻擊和跨域發(fā)送請求這兩方面的安全問題。除此之外,潛在的SQL注入問題在AJAX應(yīng)用程序中也是一種常見的安全性問題,但是這類問題已經(jīng)被有效的解決了,本文將不做闡述。
2.1 腳本安全問題。XSS又叫Cross Site Script,跨站腳本攻擊。在AJAX應(yīng)用程序中,是最常見的一種腳本攻擊??缯灸_本攻擊并不是一種新的攻擊方式,但是在過去的幾年當(dāng)中經(jīng)常被人們所忽視。在一個(gè)傳統(tǒng)的網(wǎng)頁應(yīng)用程序中,跨站腳本攻擊主要通過偷取cookie和會(huì)話劫持兩種方式實(shí)現(xiàn),當(dāng)用戶刷新網(wǎng)頁時(shí)跨站腳本攻擊就會(huì)被觸發(fā)。對于傳統(tǒng)應(yīng)用程序而言這并不是什么很嚴(yán)重的問題。但是在AJAX應(yīng)用程序中,由于網(wǎng)頁是通過JavaScript控制的,這種基于AJAX的應(yīng)用程序無需通過用戶可以直接向網(wǎng)頁服務(wù)器發(fā)送HTTP請求。因此跨站腳本攻擊對于AJAX程序而言威脅要更大。
XSS通常是指黑客將惡意的HTML代碼插入到網(wǎng)頁中,當(dāng)用戶瀏覽網(wǎng)頁時(shí)被嵌入的惡意代碼會(huì)被激活??缯灸_本攻擊流程如下圖所示:
由于網(wǎng)頁服務(wù)器對于用戶輸入的字段沒有進(jìn)行嚴(yán)格的檢查和過濾,因此AJAX應(yīng)用程序很容易遭受跨站腳本的攻擊。對于基于Ajax應(yīng)用程序的客戶端腳本,JavaScript腳本本身可以創(chuàng)建HTTP請求并且請求的格式和用戶在瀏覽器操作的是相同的。因此,網(wǎng)絡(luò)服務(wù)器無法區(qū)分請求是來自于用戶的操作還是來自于惡意的JavaScript創(chuàng)建的XMLHTTPRequest對象。
2.2 跨域發(fā)送請求安全問題。通常有四種方式來實(shí)現(xiàn)跨域操作:(1)通過Flash來實(shí)現(xiàn)跨域;(2)使用Javascript動(dòng)態(tài)生成的