在Internet大眾化及Web技術飛速演變的今天,在線安全所面臨的挑戰日益嚴峻。伴隨著在線信息和服務的可用性的提升,以及基子Web的攻擊和破壞的增長,安全風險達到了前所未有的高度。由於眾多安全工作集中在網絡本身上面,Web應用程序幾乎被遺忘了。也許這是因為應用程序過去常常是在一台計算機上運行的獨立 程序,如果這台計算機安全的話,那麼應用程序就是安全的。如今,情況大不一樣了,Web應用程序在多種不同的機器上運行:客戶端、Web服務器、數據庫服務器和應用服務器。而且,因為他們一般可以讓所有的人使用,所以這些應用程序成為了眾多攻擊活動的後台旁路。
由於Web服務器提供了幾種不同的方式將請求轉發給應用服務器,並將修改過的或新的網頁發回給最終用戶,這使得非法闖入網絡變得更加容易。
而且,許多程序員不知道如何開發安全的應用程序。他們的經驗也許是開發獨立應用程序或Intranet Web應用程序,這些應用程序沒有考慮到在安全缺陷被利用時可能會出現災難性後果。
其次,許多Web應用程序容易受到通過服務器、應用程序和內部已開發的代碼進行的攻擊。這些攻擊行動直接通過了周邊防火牆安全措施,因為端口80或443(SSL,安全套接字協議層)必須開放,以便讓應用程序正常運行。Web應用程序攻擊包括對應用程序本身的DoS(拒絕服務)攻擊、改變網頁內容以及盜走企業的關鍵信息或用戶信息等。
總之,Web應用攻擊之所以與其他攻擊不同,是因為它們很難被發現,而且可能來自任何在線用戶,甚至是經過驗證的用戶。迄今為止,該方面尚未受到重視,因為企業用戶主要使用防火牆和入侵檢測解決方案來保護其網絡的安全,而防火牆和入侵檢測解決方案發現不了Web攻擊行動。
常見的Web應用安全漏洞
下面將列出一系列通常會出現的安全漏洞,並且簡單解釋一下這些漏洞是如何產生的。
已知弱點和錯誤配置
已知弱點包括Web應用使用的操作系統和第三方應用程序中的所有程序錯誤或者可以被利用的漏洞。這個問題也涉及到錯誤配置,包含有不安全的默認設置或管理員沒有進行安全配置的應用程序。一個很好的例子就是你的Web服務器被配置成可以讓任何用戶從系統上的任何目錄路徑通過,這樣可能會導致洩露存儲在Web服務器上的一些敏感信息,如口令、源代碼或客戶信息等。
隱藏字段
在許多應用中,隱藏的HTML格式字段被用來保存系統口令或商品價格。盡管其名稱如此,但這些字段並不是很隱蔽的,任何在網頁上執行“查看源代碼”的人都能看見。許多Web應用允許惡意的用戶修改HTML源文件中的這些字段,為他們提供了以極小成本或無需成本購買商品的機會。這些攻擊行動之所以成功,是因為大多數應用沒有對返回網頁進行驗證;相反,它們認為輸入數據和輸出數據是一樣的。
後門和調試漏洞
開發人員常常建立一些後門並依靠調試來排除應用程序的故障。在開發過程中這樣做可以,但這些安全漏洞經常被留在一些放在Internet上的最終應用中。一些常見的後門使用戶不用口令就可以登錄或者訪問允許直接進行應用配置的特殊URL。
跨站點腳本編寫
一般來說,跨站點編寫腳本是將代碼插入由另一個源發送的網頁之中的過程。利用跨站點編寫腳本的一種方式是通過HTML格式,將信息帖到公告牌上就是跨站點腳本編寫的一個很好范例。惡意的用戶會在公告牌上帖上包含有惡意的JavaScript代碼的信息。當用戶查看這個公告牌時,服務器就會發送HTML與這個惡意的用戶代碼一起顯示。客戶端的浏覽器會執行該代碼,因為它認為這是來自Web服務器的有效代碼。
參數篡改
參數篡改包括操縱URL字符串,以檢索用戶以其他方式得不到的信息。訪問Web應用的後端數據庫是通過常常包含在URL中的SQL調用來進行的。惡意的用戶可以操縱SQL代碼,以便將來有可能檢索一份包含所有用戶、口令、信用卡號的清單或者儲存在數據庫中的任何其他數據。
更改cookie
更改cookie指的是修改存儲在cookie中的數據。網站常常將一些包括用戶ID、口令、帳號等的cookie存儲到用戶系統上。通過改變這些值,惡意的用戶就可以訪問不屬於他們的帳戶。攻擊者也可以竊取用戶的cookie並訪問用戶的帳戶,而不必輸入ID和口令或進行其他驗證。