近年來在網絡經常會看到一些網站的泄密事件,導致大量的用戶資料泄露,究其原因,很大程度上就在于數據庫備份文件被盜取造成的。
在SQL Server 2012之前的版本中,在Backup備份語句中,可以定義備份集密碼。使用密碼可以防止別人使用SQL Server工具在未經授權的情況下,執行數據庫還原操作。但是,這僅僅是給備份附加了一個密碼,并沒有對備份數據進行加密。TDE可以加密整個數據庫,當然也可以加密備份文件。不過單單使用TDE來加密備份文件,又顯得有些大材小用。
在SQL Server 2014中,如果使用SQL Server 2014的原生備份加密,則無需對整個數據庫進行加密,備份僅僅在被寫入磁盤之前加密。如果將原生備份加密功能和備份壓縮工相結合,可以先壓縮再加密,不僅可以保護備份文件安全而且可以減小備份文件體積,可謂一舉兩得。這里還以上述“Clientzl”數據庫為例,首先按照上述方法創建數據庫主密鑰,執行“CREATE CERTIFICATE ClientbkCert WITH SUBJECT = 'Backup Encryption Certificate'”,“Go”語句,創建所需的證書。注意,必須在Matser數據庫下創建證書。
執 行“B A C K U P CERTIFICATE ClientbkCert TO FILE = 'd:zhengshuClientzlCert.cer”,“Go”語句,將證書導出。執行“BACKUP DATABASE C l i e n t z l T O D I S K='C:dataClientzl_Encrypted.bak' WITH COMPRESSION, ENCRYPTION(ALGORITHM = AES_256,SERVER CERTIFICATE =ClientbkCert)”語句,就可以將數據庫備份進行加密處理。
在還原時,可以執行“USE master”,“RESTORE DATABASE Clientzl FROM DISK = 'C:dataClientzl_Encrypted.bak' WITH REPLACE”語句,就可以將其還原。如果在其他的SQL Server實例上進行還原,則必須按照上述方法將證書備份出來,然后在目標主機上執行導入證書操作,之后才可以執行數據庫還原操作。
實際對于使用SQL Server作為后臺數據的網站來說,如果網站代碼存在注入漏洞的話,黑客就會使用各種注入工具對其進行SQL注入攻擊,對于經驗豐富的黑客來說,甚至可以徒手進行注入攻擊。一旦讓其得手,對網站的安全就會造成極大的威脅。例如,黑客可以猜解到后臺數據庫管理員密碼。并冒充管理員登錄到網站后臺,上傳木馬并提升權限,對服務器進行各種攻擊。或者利用注入漏洞,執行各種危險的命令,打開遠程桌面服務,創建黑客賬戶,進而控制整個服務器。
SQL注入攻擊的原理很簡單,因為是網站程序沒有對用戶提交的數據的合法性進行準確判斷造成的。防范SQL注入攻擊的方法有很多,例如對用戶提交的數據進行嚴格的驗證和過濾,對可疑數據(包括特殊字符,敏感的SQL關鍵字等)進行替換,當對用戶輸入的內容進行過濾后,可以大大降低攻擊風險。使用存儲過程,利用參數來傳送用戶提交的數據并通過對參數的數據類型進行嚴格的定制,可以有效過濾各種惡意數據,使其無法提交執行。
為了提高安全性,還可以在客戶端進行輸入合法性檢查,限制其輸入長度,對應用程序使用的賬號進行嚴格的權限管理,例如不要將SA賬戶隨意交由用戶使用等。