三大措施將SQL隱碼攻擊的危害最小化

餘二五發表於2017-11-15
使用使用者提供的資料進行資料庫查詢的任何應用程式是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隱碼攻擊因素至關重要。
本文轉自 fish_yy 51CTO部落格,原文連結:http://blog.51cto.com/tester2test/137600,如需轉載請自行聯絡原作者


相關文章