Ajax已經是現在網站設計的顯學,在Google、Yahoo!這些網站許多的服務上,都能看到應用Ajax帶來的方便性,像是自動建議選字或是Outlook的Web郵件等。因此,許多網站也想導入Ajax。

不過重頭學Ajax速度太慢,許多開發人員便紛紛找尋現成Ajax框架作為解決方案,但是心裡又不免擔心,Ajax似乎也有一些潛在風險?

做好後端把關,風險大為降低
首先我們要先了解的是Ajax究竟有哪些安全上的風險。所謂Ajax,最狹義的說法是指非同步傳輸的溝通方式,藉由XMLHttpRequest這個瀏覽器物件,處理用戶端與伺服器端資料交換的過程。後來Ajax也進一步包含操作CSS與DOM(文件物件模型)呈現豐富效果的技巧。

不管是狹義或廣義,大多數Ajax技巧使用的是JavaScript語法,由於JavaScript語法屬於用戶端的程式語言,它的一大特性就是程式碼會隨著頁面下載到使用者的電腦中。不像是PHP、ASP這類伺服器端的程式語言,程式在伺服器上執行,前端看不到原始碼,相反地JavaScript的變數宣告、程式邏輯等都攤開在使用者面前,有人便擔心如此一來會增加被攻擊的機會。

另外,最容易與JavaScript聯想在一起的XSS(Cross-site scripting)攻擊手法,不是網站本身已經被攻陷,不然就是沒對使用者的內容進行過濾,造成有心人士可以上傳攻擊程式碼到網站上,一旦瀏覽網頁,使用者就有被植入木馬的風險。

這些攻擊成立的條件,通常是JavaScript設計不當,或是後端程式沒有盡到把關工作。前者例如透過JavaScript進行購物清單的加總計算,而讓使用者有機可趁可以竄改價格,而後者就像是常聽見的SQL Injection的攻擊手法。

一般來說Ajax通常應該只負責像動畫效果、使用者介面元件這些與商務邏輯無關的部分。至於非同步傳輸雖然會呼叫後端的程式,送資料到後端去,但任何資料送到伺服器,系統本身原本就要執行把關工作,這與Ajax框架無關。事實上現成的Ajax框架是由精熟JavaScript的程式人員所開發,會避免誤用,相對來說更安全。


Yahoo!奇摩在許多服務上應用了Yahoo!開發的Ajax框架YUI(Yahoo! User Interface ),建立近似桌面應用程式的互動經驗。YUI是一開放計畫,開發人員可以應用在自己的網站中。


Ajax框架更新到安全版本,網站更為安全
Ajax使用的XMLHttp Request,在設計之初就限制請求資源與呼叫的程式,必須同在一個網域內,藉此降低風險。相對來說,這個前提也讓Ajax的安全性大為提高。

由於Ajax是否安全,相當大的比例是建立在後端程式把關上,因此使用現成的Ajax框架並不會帶來安全上的疑慮,甚至通常會比自己寫程式更為安全,畢竟這些框架使用的人多,發現問題與修正的速度也快。

唯一要注意的是,世界上沒有百分之百安全的程式,使用時只要留意該框架的更新訊息,一旦發布有關安全性的升級資訊時,應該盡快升級到較新、安全的版本,就能降低遭到攻擊的機會。文⊙黃天賜

iThome歡迎讀者提問,請將你所遇到的各種企業IT疑難雜症,寄至iThome編輯部:QA@mail.ithome.com.tw


熱門新聞

Advertisement