防止SQL注入攻擊:網絡管理員的前景展望
針對Web應用的攻擊——SQL注入為人所熟知,安全專家對被越來越多的黑客所利用的這一方式長期以來都非常警惕。SQL注入是一種人為向Web表單的輸入框中加入惡意的結構化查詢語言(SQL)代碼以試圖獲取資源的訪問權限或是改變數據的安全攻擊。
它需要的唯一條件是網絡端口80處于開放狀態。即使有設置妥當的防火墻,這一端口也是少數的幾個允許流量的通道之一。最近發生的SQL注入案例是Heartland Payment Systems公司的服務器攻擊事件,它讓網絡管理人員意識到SQL注入威脅的嚴重程度并且開始重新審視他們對這一攻擊的防范措施。
防御SQL注入攻擊的主要方法是使用參數化的存儲程序。當這些程序被使用時,將以參數和用戶定義的子程序的形式對數據庫發出請求,這就代替了需要用戶直接提供數值的命令方式。SQL參數的優勢不光體現在輸入的安全性上,而且他們還能夠很大程度地減少SQL注入攻擊發生的成功幾率。
數據庫的開發不在網絡管理員的職責范圍之內,但是你應當堅信只有保障了網絡上的數據安全才能保證遵循了最佳實踐。
雖然使用存儲程序是必須的,但光這樣做還是不夠的。為了防御潛在的攻擊者,深度防御戰略是必不可少的。否則開發者將會被要求提供前線安全(front-line security),而從以往經驗看來這對許多的組織來說都是種挑戰。數據庫管理員和應用程序開發者應當遵從最佳實踐是毫無疑問的,但還是讓我們來看看你作為一個網絡管理員,為數據庫資源提供附加保護所能做的事情。
應用程序和數據庫服務器很顯然需要加固,并需要定期打補丁,但是由于SQL注入攻擊的對象是具體的Web應用程序——ASP, JSP, PHP等,而不是Web服務器和SQL注入攻擊運行的操作系統,因而SQL注入攻擊不能因系統的補丁升級而得到解決。
靜態的和網絡中傳送的敏感信息都需要加密,但作出最大貢獻的可能要數附加的Web應用防火墻或作為附加防御的一些應用層防火墻的變種。
Web應用防火墻的防護范圍超越了傳統網絡防火墻和入侵檢測/入侵防御系統。許多Web應用防火墻,比如由Imperva公司和Barracuda Networks公司開發的產品,能夠幫助防御SQL注入攻擊、跨站腳本攻擊和其他的一些針對應用程序邏輯漏洞或軟件技術漏洞的攻擊。最新的Web應用防火墻能夠識別由攻擊者使用SQL注入開發的逃逸技術(evasion techniques)。例如,有一種是通過對注入的命令進行部分編碼來達到攪亂攻擊的目的的。
你所選擇的應用層防火墻應當同時允許創建過濾器來進行攔截、分析或者修改僅限于流向該網絡的流量。大量的請求通常不需要分析,過濾器通常不應當去除在SQL注入攻擊中經常使用的字符串,例如——and @@version。所有的這些請求都能夠記錄到日志并且其原IP地址也可封閉。更出色的防火墻能夠“學習”對你的特定網絡來說哪些是正常流量,哪些是異常流量,并且采取各自相應的處理方式。
當檢測到異常狀況時,Web應用防火墻能夠關閉正在發生的潛在攻擊進程。而且,由于SQL注入通常通過URL查詢字符串來發動攻擊,對Web服務器的日志文件進行定期檢查可以發現可能帶來注入攻擊的異常查詢操作。
作為網絡管理員,有一點很重要,那就是保證Web應用程序使用的任何賬戶的權限必須被設置為最低級別。嚴格的訪問限制將會降低成功的攻擊所造成的損失。絕對不要在用戶使用帶有管理權限的用戶名,例如在服務器層使用“sysadmin”,或者在數據庫層使用“db_owner” 時,連接Web應用程序。
例如,微軟建議在安裝SQL Server時,為服務分配一個域賬戶,以限制用戶只能訪問必要資源。這樣以來,即使攻擊者攻破了某組織的防線,他還會被訪問SQL服務器的控制集限制住。
由于SQL注入攻擊利用的是寫得不夠完美的代碼,完全阻止SQL注入攻擊的唯一方式是解決你的應用程序代碼的漏洞問題。然而,作為網絡管理員,你還可以添加附加的防御層,從而使潛在的攻擊者更難攻克。
【編輯推薦】