| 導購 | 订阅 | 在线投稿
分享
 
 
 

讓SQL注入攻擊危害最小化三大措施

2008-10-15 23:06:43  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
  使用用戶提供的數據進行數據庫查詢的任何應用程序是SQL注入攻擊的一個潛在目標。數據庫管理員可能無法完全阻止針對其數據庫服務器的SQL注入式攻擊;但是,管理員們和應用程序開發人員可以做一些事情,將這些攻擊的影響最小化。

  數據庫管理員可以做什麽?

  不要讓數據庫和Web服務器放在同一台計算機上

  使用防火牆或不可路由的IP地址來阻止到數據庫的互聯網訪問。一旦配置完畢,來自數據庫服務器的數據包將不能被轉發到互聯網。在Web服務器上需要添加一條路由,這樣才能找到數據庫服務器。

  配置可信任的IP接入和訪問(例如,IPSEC),以控制哪些機器能夠與數據庫服務器通信。

  從數據庫服務器上移除所有的示例腳本和應用程序。

  爲每一個應用程序的數據庫連接賬戶使用一個專用的低特權賬戶。不要使用sa、dba、admin。

  不要准許用戶或應用程序直接訪問數據庫表。要使用對數據庫擁有有限訪問的應用程序角色。如果應用程序僅需要讀取訪問,就要將數據庫的訪問限制爲只讀。

  從生産數據庫中移除未用的存儲過程。

  將對應用程序的訪問僅授權給用戶創建的存儲過程。

  不要將應用程序的「_ANY_」授權給操作系統命令或系統存儲過程。

  應用程序的設計人員可以做什麽?

  程序設計人員肩負著保障Web應用程序安全的重要責任。在設計和編碼階段加強安全審察才是杜絕程序漏洞的關鍵。大體而言,程序設計者至少應當實施下面的一些措施:

  要創建應用程序要生成的特定的通用錯誤消息。因爲,在一次SQL注入攻擊期間,通過數據庫生成的默認的錯誤消息,攻擊者可以獲取有價值的信息,如表格和欄的名稱。

  在將用戶服務的輸入提交給數據庫之前,驗證用戶輸入的合法性。僅接受所期望的用戶輸入,並限制其長度。注意,只要可能,使用白名單列表檢查所有的用戶輸入。應用程序服務器防火牆可被用于檢查所有的輸入,並僅接受那些符合標准的輸入。

  在程序開發期間,使用Web應用程序掃描工具發現代碼中漏洞。

  將Web應用程序與SQL數據庫隔離開來,將應用程序所要求的所有SQL放置在數據庫服務器上。

  使用靜態查詢。如果需要動態查詢,就使用准備好的語句。

  使用一個安全的接口,如ADO的Command Object,使應用程序執行存儲過程。

  檢測SQL注入漏洞和攻擊

  要檢測易于受攻擊的應用程序並不是簡單事情,因爲這些漏洞可能存在于面向用戶的任何應用程序接口中。雖然並非所有的SQL注入攻擊技術都易于檢測,但數據庫管理員或開發人員可以做以下的事情:

  閱讀Web服務器的日志。有時,在這些日志中就可輕易地發現SQL注入攻擊,因爲這時寫往日志的登錄項目要比平常多得多。

  查找HTTP 404和HTTP 500錯誤日志項目,以及程序生成的檢查用戶輸入的其它的錯誤日志項目。

  使用Web應用程序掃描工具。這些工具可被用于警告數據庫管理員,告知管理員應用程序中易受SQL注入攻擊的地方。

  在部署應用程序之前,檢查其中的SQL注入因素至關重要。

  總之,一個防禦SQL注入攻擊的穩健方案應是在開發、部署、管理、維護的多個方面都進行檢查,並且需要安全管理人員不斷地注意SQL注入的最新動向,采用切實可行的工具,使程序的漏洞最小化。
 
使用用戶提供的數據進行數據庫查詢的任何應用程序是SQL注入攻擊的一個潛在目標。數據庫管理員可能無法完全阻止針對其數據庫服務器的SQL注入式攻擊;但是,管理員們和應用程序開發人員可以做一些事情,將這些攻擊的影響最小化。 數據庫管理員可以做什麽? 不要讓數據庫和Web服務器放在同一台計算機上 使用防火牆或不可路由的IP地址來阻止到數據庫的互聯網訪問。一旦配置完畢,來自數據庫服務器的數據包將不能被轉發到互聯網。在Web服務器上需要添加一條路由,這樣才能找到數據庫服務器。 配置可信任的IP接入和訪問(例如,IPSEC),以控制哪些機器能夠與數據庫服務器通信。 從數據庫服務器上移除所有的示例腳本和應用程序。 爲每一個應用程序的數據庫連接賬戶使用一個專用的低特權賬戶。不要使用sa、dba、admin。 不要准許用戶或應用程序直接訪問數據庫表。要使用對數據庫擁有有限訪問的應用程序角色。如果應用程序僅需要讀取訪問,就要將數據庫的訪問限制爲只讀。 從生産數據庫中移除未用的存儲過程。 將對應用程序的訪問僅授權給用戶創建的存儲過程。 不要將應用程序的「_ANY_」授權給操作系統命令或系統存儲過程。 應用程序的設計人員可以做什麽? 程序設計人員肩負著保障Web應用程序安全的重要責任。在設計和編碼階段加強安全審察才是杜絕程序漏洞的關鍵。大體而言,程序設計者至少應當實施下面的一些措施: 要創建應用程序要生成的特定的通用錯誤消息。因爲,在一次SQL注入攻擊期間,通過數據庫生成的默認的錯誤消息,攻擊者可以獲取有價值的信息,如表格和欄的名稱。 在將用戶服務的輸入提交給數據庫之前,驗證用戶輸入的合法性。僅接受所期望的用戶輸入,並限制其長度。注意,只要可能,使用白名單列表檢查所有的用戶輸入。應用程序服務器防火牆可被用于檢查所有的輸入,並僅接受那些符合標准的輸入。 在程序開發期間,使用Web應用程序掃描工具發現代碼中漏洞。 將Web應用程序與SQL數據庫隔離開來,將應用程序所要求的所有SQL放置在數據庫服務器上。 使用靜態查詢。如果需要動態查詢,就使用准備好的語句。 使用一個安全的接口,如ADO的Command Object,使應用程序執行存儲過程。 檢測SQL注入漏洞和攻擊 要檢測易于受攻擊的應用程序並不是簡單事情,因爲這些漏洞可能存在于面向用戶的任何應用程序接口中。雖然並非所有的SQL注入攻擊技術都易于檢測,但數據庫管理員或開發人員可以做以下的事情: 閱讀Web服務器的日志。有時,在這些日志中就可輕易地發現SQL注入攻擊,因爲這時寫往日志的登錄項目要比平常多得多。 查找HTTP 404和HTTP 500錯誤日志項目,以及程序生成的檢查用戶輸入的其它的錯誤日志項目。 使用Web應用程序掃描工具。這些工具可被用于警告數據庫管理員,告知管理員應用程序中易受SQL注入攻擊的地方。 在部署應用程序之前,檢查其中的SQL注入因素至關重要。 總之,一個防禦SQL注入攻擊的穩健方案應是在開發、部署、管理、維護的多個方面都進行檢查,並且需要安全管理人員不斷地注意SQL注入的最新動向,采用切實可行的工具,使程序的漏洞最小化。
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
  免責聲明:本文僅代表作者個人觀點,與王朝網絡無關。王朝網絡登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
© 2005- 王朝網路 版權所有