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