什麼是Web應用防火牆?
Web應用防火牆是專門為保護基於web的應用程序而設計的,它不像傳統的防火牆,基於互聯網地址和端口號來監控和阻止數據包。一個標准的端口號對應一種網絡應用程序類型。例如,telnet接收發送到端口23的數據包,郵件服務器接收發送到端口25的數據包。
傳統的防火牆允許向郵件服務器相對應的互聯網地址發送數據,讓數據包通過25端口送達目的地。發送數據包給一個不是郵件服務器系統的互聯網地址和25端口,就是一個攻擊。防火牆會阻止這些數據包。
Web服務器理應通過80端口傳送數據包。所以所有發給支撐web服務器系統80端口的數據包必須被允許通過防火牆。傳統的防火牆沒有辦法測定一個地址指向正確的數據包是否包含威脅,但Web應用防火牆可以仔細檢查數據包的內容來檢測並阻止威脅。
Web應用程序如何遭受攻擊
黑客們不斷開發新的方法獲得未經授權的Web應用程序訪問,但是也有一些通用的技術。
SQL注入:一些應用程序通過復制Web客戶端輸入來創建數據庫查詢。黑客通過構造一些應用程序沒有仔細檢查和會被拒絕的字符串,來獲取返回的機密數據。
跨站點腳本:黑客插入腳本代碼(如JavaScript或ActiveX)到一個輸入字符串,導致Web服務器洩漏用戶名和密碼等信息。
操作系統命令注入:一些應用程序從web輸入來創建操作系統命令,就像訪問一個文件和顯示文件內容。如果輸入的字符串沒有仔細檢查機制,黑客就可以創建輸入來顯示未經授權的數據、修改文件或系統參數。
會話劫持:黑客通過猜測基於令牌格式知識的會話令牌的內容來獲得登錄會話的權利。這使得黑客能接管會話並可以得到原來的用戶帳戶信息。
篡改參數或URL:web應用程序通常在返回的的web頁面中嵌入參數和URL,或者用授權的參數更新緩存。黑客可以修改這些參數、URL或緩存,使Web服務器返回不應洩漏的信息。
緩沖區溢出:應用程序代碼應該檢查輸入數據的長度,以確保輸入數據不會超出剩余的緩沖區和修改相鄰的存儲。黑客很快就會發現應用程序不檢查溢出,並創建輸入來導致溢出。
Web應用防火牆檢查每一個傳入的數據包的內容來檢測上述類型的攻擊。例如,web應用防火牆會掃描SQL查詢字符串,來檢測和刪除那些導致返回的數據多余應用程序要求的字符串。增值廠商應仔細監測新發展的攻擊類型並跟蹤檢測他們的最新產品。
Web應用防火牆不僅檢測上述已知類型的攻擊,而且還監測異常的使用模式來檢測目前未知的攻擊方法。例如,通常Web應用程序與web客戶端 的信息交流數量是有限的。如果Web應用防火牆檢測到Web服務器正在返回一個比預期大很多的數據量,它就會及時切斷傳輸,以防止更多的數據洩露。
目前有基於軟件和基於應用程序的web應用防火牆。基於軟件的產品布置在Web服務器上,而基於應用程序的產品放置在Web服務器和互聯網接口之間。兩種類型的防火牆都會在數據傳入和傳出web服務器之前檢查數據。
一般基於軟件的產品成本低於基於應用程序的產品成本,基於軟件的產品供應商聲稱這類防火牆具有更低的延遲和更高的吞吐量。但是在web服務器上安裝額外的軟件勢必會增加額外的處理負荷和系統上軟件的復雜性。
基於應用程序的防火牆廠商聲稱,這類防火牆安裝和使用簡單,因為沒有額外的軟件安裝在Web服務器系統上。 Web服務器的性能不受Web應用程序防火牆處理的影響。
除了商業產品外,也有許多開放源碼的Web應用防火牆可用。這些產品成本低於商業產品(就開放的源代碼工具來說,他們是免費的,或者就基於開 放源代碼的商業產品來說,極有可能降低成本)。過去開源代碼關注的是,黑客們將檢查代碼並設法逃避保護措施。有了應用Linux這類開源代碼軟件的豐富經 驗,這些都不是什麼問題。
所有的產品,不論是購買的還是開源代碼,無論是基於軟件的還是基於應用程序的,都應該得到支持。商業產品得到了供應商的支持。開放源代碼為增 值廠商和系統集成商提供了一個整合安全知識的機會。為Web應用程序防火牆提供持續的支持,確保合作伙伴與客戶保持密切的關系,給供應商在未來為客戶提供 更多產品和服務提供了機會。