程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 數據庫的安全理論:如何做好數據庫的安全工作

數據庫的安全理論:如何做好數據庫的安全工作

編輯:更多數據庫知識

先分3點從全局來看

對操作系統的安全需求:防止對DBMS的非法訪問和修改,保護存儲的數據、文件的安全性,對數據庫用戶的認證
對數據庫系統本身的安全需求:用戶認證管理、訪問控制、審計,數據庫的穩定性,保證數據的安全性與完整性,完善的恢復功能,數據加密
對數據庫應用系統的安全需求:訪問控制、認證管理,對數據庫的保護防止非法訪問和修改,自身的穩定性

舉一個實例

SQL注入:利用現有應用程序,將(惡意)的SQL命令注入到後台數據庫引擎執行的能力,這是SQL注入的標准釋義。 
所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務器執行惡意的SQL命令。在某些表單中,用戶輸入的內容直接用來構造(或者影響)動態SQL命令,或作為存儲過程的輸入參數,比如典型的攻擊類型是在newsid變量後加後sql語句:exec xp_cmdshell ‘net user’
這樣就執行了一個加用戶的命令了。

Web應用程序訪問數據庫會造成特定的一些潛在安全問題。SQL注入攻擊仍然穩居黑客至愛兵器榜的首位,對那些想要保護數據安全的企業來說,這是個大麻煩。
據CVE的2006年度統計數據顯示,SQL注入攻擊漏洞呈逐年上升的狀態

如何做好數據庫的安全工作

1.數據庫基本安全架構

從廣義上講,數據庫的安全首先依賴於網絡系統。網絡系統的安全是數據庫安全的第一道屏障,外部入侵首先就是從入侵網絡系統開始的。

解決方案:防火牆,入侵檢測 IDS—Instrusion Detection System,協作式入侵檢測技術,IPS:Intrusion Prevention System 入侵防御系統

對於宿主操作系統層次,操作系統安全策略用於配置本地計算機的安全設置,包括密碼策略、賬戶鎖定策略、審核策略、IP安全策略、用戶權利指派、加密數據的恢復代理以及其它安全選項。
2 數據庫用戶及權限

減少特權管理,不要顯式地將同一特權組授權給幾個用戶,只需將這特權組授給角色,然後將角色授權給每一用戶。
動態特權管理,如果一組特權需要改變,只需修改角色的特權,所有授給該角色的全部用戶的安全域將自動地反映對角色所作的修改。
特權的選擇可用性,授權給用戶的角色可選擇地使其使能(可用)或使不能(不可用)。
應用可知性,當一用戶經一用戶名執行應用時,該數據庫應用可查詢字典,將自動地選擇使角色使能或不能。
專門的應用安全性,角色使用可由口令保護,應用可提供正確的口令使用權角色使能,達到專用的應用安全性。因用戶不知其口令,不能使角色使能。
3 數據庫加密技術

庫外加密
將數據庫的文件作為加密對象,在庫外加密方式中,加/解密過程發生在DBMS之外,DBMS管理的是密文。加/解密過程大多在客戶端實現,也有的由專門的加密服務器或硬件完成。
庫內加密
加密對象為數據庫中存儲的數據,比如表、記錄、元素、數據等。庫內加密在DBMS內核層實現加密,加/解密過程對用戶與應用透明,數據在物理存取之前完成加/解密工作。
硬件加密
在物理存儲器與數據庫系統之間的硬件加密裝置,加密解密操作由硬件中間設備完成
4 數據庫備份技術

數據庫有三種標准的備份方法,它們分別為導出/導入(EXPORT/IMPORT)、冷備份、熱備份。 
     — 導入/導出備份:邏輯備份
     — 冷備份:物理備份
     — 熱備份:物理備份 
設定數據庫備份計劃,啟動數據庫歸檔模式,定期執行數據庫備份,監控檢查備份情況

5 數據庫審計技術

審計是對選定的用戶動作的監控和記錄,通常用於:
審查可疑的活動。例如:數據被非授權用戶所刪除,此時安全管理員可決定對該 數據庫的所有連接進行審計,以及對數據庫的所有表的成功地或不成功地刪除進行審計。
監視和收集關於指定數據庫活動的數據。例如:DBA可收集哪些被修改、執行了多少次邏輯的I/O等統計數據。

數據庫常見攻擊與防護

1 破解弱口令或默認的用戶名及口令

Oracle數據庫常見缺省用戶:SYS、SYSTEM、DBSNMP、SCOTT 
數據庫常見缺省用戶:SA

2 特權提升

特權提升:惡意的用戶占有超過其應該具有的系統特權 
原因:
數據庫管理系統漏洞
如:oracle 10g DBMS_Scheduler本地特權提升漏洞:任何擁有CREATE JOB權限可通過dbms_scheduler執行一個數據庫作業而轉換SESSION_USER到SYS,本地攻擊者可以利用此漏洞提升權限。
錯誤的配置:一個用戶被錯誤地授與了超過其實際需要用來完成工作的、對數據庫及其相關應用程序的訪問和特權。
3 利用未用的數據庫服務和功能中的漏洞

利用未用的和不需要的數據庫服務和功能中的漏洞
利用未用的和不需要的數據庫服務和功能中的配置缺陷
4 針對未打補丁的數據庫漏洞

雖然Oracle和其它的數據庫廠商確實在為其漏洞打補丁,問題是單位不能跟得上這些補丁,因此它們總是處於企圖利用某種機會的老謀深算的攻擊者控制之下。
5 SQL注入攻擊及防護

漏洞原理:在數據庫應用的編程過程中,由於程序員沒有對用戶輸入數據進行規范檢查,導致攻擊者能夠通過構造惡意輸入數據,操作數據庫執行,甚至能直接攻擊操作系統
SQL Injection(SQL注入),就是利用某些數據庫的外部應用把特定的數據命令插入到實際的數據庫操作語言當中,從而達到入侵數據庫乃至操作系統的目的。

解決方案:

從根本上避免出現SQL Injection漏洞,必須提高WEB程序員的安全意識和安全編程技能來解決程序本身的漏洞;
代碼中必須對所有用戶輸入進行嚴格的過濾,對單引號、雙引號以及“--”等符號、非指定的數據類型及數據長度進行過濾;
用存儲過程來執行所有的查詢 
限制表單或查詢字符串輸入的長度 
檢查用戶輸入的合法性,確信輸入的內容只包含合法的數據 
將用戶登錄名稱、密碼等數據加密保存 
檢查提取數據的查詢所返回的記錄數量  
合理設置數據庫應用程序的權限;
對數據庫系統進行必要的安全配置。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved