如何開發安全的AJAX應用
AJAX技術已經是現在最流行的Web應用開發技術了,但是與此同時,Web應用也成了這個IT架構中安全最薄弱,最容易受到攻擊的部分,AJAX應用相比較與傳統的Web應用,大大增加了用戶端與伺服器之間的互動,同時也使得一些背景商務邏輯介面暴露給了用戶端,如果伺服器端沒有足夠的保護或者沒有對用戶端請求進行合法性校正,攻擊者就會趁虛而入,進入系統內部進行破壞。開發人員如何才能在開發工程中保證AJAX應用的安全呢? 一下是我搜集資料總結出來的一些checklist和best practices,希望對大家有所協助。
1. 輸入校正,這一部分已經在我的上一篇blog 如何進行Web應用的安全性測試和輸入校正 中進行了說明,進行輸入校正有兩種方式,一種是Blacklisting: 就是列出所有非法的輸入進行屏蔽;另外一種是Whitelisting: 就是列出合法的輸入格式,只要不屬於這種格式都劃為非法格式進行屏蔽。安全方面來說,Whitelisting比Blacklisting有更高的安全性。
2. 盡量避免動態產生和執行code, 在javascript中盡量避免使用eval函數。
3. 在使用json對象之前對它進行校正,因為json對象也是javascript的一部分,所以json對象裡面也有可能包含有有害的代碼,所以在使用之前要對json進行校正,以保證json對象是安全的,校正的方法可以使用Regex進行也可以使用一個json parser進行轉換,然後再使用。
4. 在引用不可信的內容的時候盡量使用iframe的方式。
5. 不要一刀切的使用AJAX, AJAX的作用是提高應用的互動性,所以之需要在互動性比較強的地方才使用ajax, 其他如之需要展示資訊的地方使用傳統的方式安全性更高。
6. 盡量使互動的網路傳輸量最小,ajax頻繁的互動不但對應用效能有影響,對安全也是很大的隱患,所以要儘可能在最需要的地方使用ajax, 不要用ajax執行大的局部重新整理操作
7. 最後可以使用一些ajax的安全檢查工具進行檢查。