兩位一體:論信息化中的應(yīng)用安全和數(shù)據(jù)庫(kù)安全
應(yīng)用安全和數(shù)據(jù)庫(kù)的安全就像是拼圖中的拼圖塊,它們雖然不同,卻彼此之間需要對(duì)方,缺少任何一個(gè),都不能形成一個(gè)安全整體。如果其中一方出現(xiàn)安全隱患就會(huì)令整個(gè)安全防御徹底失效,如WEB應(yīng)用程序存在SQL注入
應(yīng)用安全和數(shù)據(jù)庫(kù)的安全就像是拼圖中的拼圖塊,它們雖然不同,卻彼此之間需要對(duì)方,缺少任何一個(gè),都不能形成一個(gè)安全整體。如果其中一方出現(xiàn)安全隱患就會(huì)令整個(gè)安全防御徹底失效,如WEB應(yīng)用程序存在SQL注入的時(shí)候,就會(huì)對(duì)整個(gè)系統(tǒng)和數(shù)據(jù)庫(kù)產(chǎn)生更大的影響。為了減小攻擊范圍,開(kāi)發(fā)人員和數(shù)據(jù)庫(kù)管理員必須明晰他們?cè)谶@個(gè)過(guò)程中的角色,共同工作,以避免WEB應(yīng)用暴露任何敏感數(shù)據(jù)庫(kù)。
如今,許多行業(yè)用戶(hù)將大量有價(jià)值的客戶(hù)數(shù)據(jù)存儲(chǔ)于在線(xiàn)數(shù)據(jù)庫(kù),通過(guò)網(wǎng)絡(luò)應(yīng)用與外界交互。不論是通信、金融、電子政務(wù)、電子商務(wù)抑或是小小的個(gè)人博客,前端應(yīng)用程序和后臺(tái)數(shù)據(jù)庫(kù)都不可避免地結(jié)合在我們現(xiàn)在的模型中,任何一個(gè)都不可離開(kāi)另一個(gè)而單獨(dú)存在。
但是由于那些應(yīng)用程序在設(shè)計(jì)時(shí)是允許任何人、從任何地方登陸進(jìn)入訪(fǎng)問(wèn),因而也成為了通往隱藏在深處的重要數(shù)據(jù)的橋梁。比如在去年十二月,國(guó)內(nèi)最大的程序員社區(qū)網(wǎng)站CSDN就遭到了黑客從WEB應(yīng)用層的攻擊,使得包含用戶(hù)密碼的數(shù)據(jù)庫(kù)泄密。
那么如何才能使這個(gè)模型更安全呢?安恒信息專(zhuān)家將為您做詳細(xì)的解讀:使模型更安全的解決方法是讓?xiě)?yīng)用程序作為人與數(shù)據(jù)互動(dòng)的唯一接口,應(yīng)用程序界面是機(jī)器與數(shù)據(jù)互動(dòng)的唯一接口。如果不是這樣,那么數(shù)據(jù)交互就有可能不能被充分控制好,這將會(huì)是一個(gè)非?;镜臐撛诼┒?。即使訪(fǎng)問(wèn)方式定義明確,實(shí)際上應(yīng)用程序依然有無(wú)數(shù)種方式令防護(hù)數(shù)據(jù)庫(kù)失敗,最終導(dǎo)致整個(gè)系統(tǒng)被黑客竊取或破壞。
安恒信息專(zhuān)家表示,安全管理人員和開(kāi)發(fā)人員經(jīng)常忽視或者錯(cuò)誤地理解數(shù)據(jù)庫(kù),常僅僅關(guān)注于保護(hù)網(wǎng)絡(luò)應(yīng)用程序不受風(fēng)險(xiǎn)的威脅--比如說(shuō)跨站腳本攻擊或者注入攻擊,而忘記了留意數(shù)據(jù)庫(kù)本身的安全隱患。很明顯,用戶(hù)需要有專(zhuān)門(mén)的工具和策略來(lái)幫助網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā)人員保護(hù)后臺(tái)數(shù)據(jù)庫(kù)的安全性,而數(shù)據(jù)庫(kù)開(kāi)發(fā)人員必須確保他們的網(wǎng)絡(luò)接口盡可能地安全。
同時(shí)安恒信息專(zhuān)家還指出,現(xiàn)在大多數(shù)用戶(hù)都是憑感覺(jué)在運(yùn)行數(shù)據(jù)庫(kù)安全。絕大多數(shù)用戶(hù)根本沒(méi)有監(jiān)控他們的數(shù)據(jù)庫(kù)。更令人不安的是,大多數(shù)用戶(hù)甚至不知道他們的重要數(shù)據(jù)的位置,很多管理員在調(diào)查中承認(rèn)他們并不能肯定數(shù)據(jù)庫(kù)中包含著重要信息。
在多數(shù)情況下,關(guān)鍵點(diǎn)在于網(wǎng)絡(luò)應(yīng)用程序本身對(duì)于攻擊者而言沒(méi)什么價(jià)值,他們只是利用應(yīng)用程序作為竊取或破壞數(shù)據(jù)的一種手段,第一個(gè)防范措施便是確保不僅僅是數(shù)據(jù)庫(kù)管理員了解重要數(shù)據(jù)在哪里存放、如何訪(fǎng)問(wèn)到,以及面臨的實(shí)際威脅。我們通常將數(shù)據(jù)庫(kù)看作是一個(gè)黑盒子,只向需要的人和應(yīng)用程序提供訪(fǎng)問(wèn)的方法,當(dāng)選取、更新或者插入操作成功后,人們會(huì)忘記還有一些事情會(huì)發(fā)生,所以說(shuō)團(tuán)隊(duì)合作是關(guān)鍵,必須要把應(yīng)用安全和數(shù)據(jù)安全做到兩位一體。
我們所面臨的網(wǎng)絡(luò)威脅
數(shù)據(jù)庫(kù)除了有與生俱來(lái)的安全隱患以外,當(dāng)應(yīng)用程序訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí),還要考慮到更多的威脅。數(shù)據(jù)庫(kù)打補(bǔ)丁、權(quán)限管理和連接管理都是典型的數(shù)據(jù)庫(kù)安全防范措施,常見(jiàn)的由網(wǎng)絡(luò)應(yīng)用程序引發(fā)的安全威脅有SQL注入式攻擊,XSS跨站攻擊、不安全的會(huì)話(huà)處理和權(quán)限升級(jí)、目錄遍歷漏洞和敏感信息泄露等漏洞。我們會(huì)深入挖掘每一種模型,但是考慮到這些風(fēng)險(xiǎn)的存在,我們最重要的是盡可能少的給予特權(quán),通過(guò)監(jiān)控輸入數(shù)據(jù)和建立安全連接來(lái)加強(qiáng)讀取方式的安全性,同時(shí)還要限制數(shù)據(jù)庫(kù)服務(wù)器對(duì)外暴露的機(jī)率。SQL注入、跨站腳本漏洞、目錄遍歷漏洞、敏感信息泄露等漏洞
SQL注入攻擊SQL注入漏洞的產(chǎn)生原因是網(wǎng)站程序在編寫(xiě)時(shí),沒(méi)有對(duì)用戶(hù)輸入數(shù)據(jù)的合法性進(jìn)行判斷,導(dǎo)致應(yīng)用程序存在安全隱患。SQL注入漏洞攻擊的就是利用現(xiàn)有應(yīng)用程序沒(méi)有對(duì)用戶(hù)輸入數(shù)據(jù)的合法性進(jìn)行判斷,將惡意的SQL命令注入到后臺(tái)數(shù)據(jù)庫(kù)引擎執(zhí)行的黑客攻擊手段。
XSS跨站攻擊跨站腳本攻擊簡(jiǎn)稱(chēng)為XSS又叫CSS 是指服務(wù)器端的CGI程序沒(méi)有對(duì)用戶(hù)提交的變量中的HTML代碼進(jìn)行有效的過(guò)濾或轉(zhuǎn)換,允許攻擊者往WEB頁(yè)面里插入對(duì)終端用戶(hù)造成影響或損失的HTML代碼。
未驗(yàn)證輸入web請(qǐng)求信息在被Web應(yīng)用使用之前都是未驗(yàn)證的,攻擊者能夠利用其中的弱點(diǎn)攻擊服務(wù)器;攻擊者通過(guò)偽造HTTP請(qǐng)求的各個(gè)部分,例如URL,查詢(xún)字符串,頭,cookies,表單域,隱藏域等繞過(guò)站點(diǎn)的安全機(jī)制。這些常見(jiàn)的偽造輸入攻擊通常包括:強(qiáng)制瀏覽,命令插入,跨站腳本,緩沖區(qū)溢出,格式化字符串,SQL注入,cookie中毒,隱藏域操作等等。
網(wǎng)絡(luò)釣魚(yú)網(wǎng)絡(luò)釣魚(yú)是通過(guò)大量發(fā)送聲稱(chēng)來(lái)自于銀行或其他知名機(jī)構(gòu)的欺騙性垃圾郵件,意圖引誘收信人給出敏感信息(如用戶(hù)名、口令、帳號(hào) ID 、 ATM PIN 碼或信用卡詳細(xì)信息)的一種攻擊方式。最典型的網(wǎng)絡(luò)釣魚(yú)攻擊將收信人引誘到一個(gè)通過(guò)精心設(shè)計(jì)與目標(biāo)組織的網(wǎng)站非常相似的釣魚(yú)網(wǎng)站上,并獲取收信人在此網(wǎng)站上輸入的個(gè)人敏感信息,通常這個(gè)攻擊過(guò)程不會(huì)讓受害者警覺(jué)。這些個(gè)人信息對(duì)黑客們具有非常大的吸引力,因?yàn)檫@些信息使得他們可以假冒受害者進(jìn)行欺詐性金融交易,從而獲得經(jīng)濟(jì)利益。受害者經(jīng)常遭受顯著的經(jīng)濟(jì)損失或全部個(gè)人信息被竊取并用于犯罪的目的。
通過(guò)應(yīng)用程序造成隱私泄漏個(gè)人或團(tuán)體的信息被其他不應(yīng)獲得者獲取。如攻擊者通過(guò)入侵大型網(wǎng)絡(luò)社區(qū)、交友網(wǎng)站、免費(fèi)郵箱等網(wǎng)絡(luò)應(yīng)用程序獲取數(shù)據(jù)庫(kù)用戶(hù)信息,并利用獲取到的個(gè)人用戶(hù)信息進(jìn)行欺騙獲取更多的利益。
我們需要共同協(xié)作
安全問(wèn)題不是某個(gè)個(gè)人的職責(zé),關(guān)鍵需要團(tuán)隊(duì)的協(xié)作。這對(duì)于應(yīng)用程序的安全問(wèn)題來(lái)說(shuō)更是如此,信息安全人員、開(kāi)發(fā)人員、系統(tǒng)和數(shù)據(jù)庫(kù)管理員都包括在內(nèi),這就是團(tuán)隊(duì)協(xié)作。除非你所在的單位已經(jīng)擁有了一個(gè)成熟的安全環(huán)境,而且已經(jīng)使用安全類(lèi)庫(kù)來(lái)處理數(shù)據(jù)庫(kù)調(diào)用和數(shù)據(jù)驗(yàn)證,在數(shù)據(jù)庫(kù)和應(yīng)用程序之間有一層數(shù)據(jù)訪(fǎng)問(wèn)層,并確保所有的數(shù)據(jù)庫(kù)權(quán)限都受到了嚴(yán)格的限制,在這種情況下應(yīng)當(dāng)讓所有團(tuán)隊(duì)成員參與并且了解高層次的應(yīng)用程序。通過(guò)共同協(xié)作,所有人都可以了解到這些安全威脅,隨后可以共同想出更好的解決方案來(lái)應(yīng)對(duì)。所有參與網(wǎng)絡(luò)應(yīng)用和數(shù)據(jù)庫(kù)開(kāi)發(fā)維護(hù)管理的人員都應(yīng)該對(duì)目前存在的安全威脅有一個(gè)充分的認(rèn)識(shí)和理解,這是非常重要的。我們必須要確保所有人員都理解應(yīng)用程序的所有技術(shù)通信原理和數(shù)據(jù)流,了解數(shù)據(jù)從哪里來(lái),如何到那里去的,以及數(shù)據(jù)是否和多個(gè)應(yīng)用程序進(jìn)行通信。這就是關(guān)于數(shù)據(jù)庫(kù)保護(hù)的第一層措施。
數(shù)據(jù)庫(kù)保護(hù)的第二層措施是安全架構(gòu)。安全設(shè)計(jì)的基礎(chǔ)有時(shí)候也被稱(chēng)作為安全架構(gòu),也就是說(shuō)當(dāng)我們以安全的方式設(shè)計(jì)數(shù)據(jù)庫(kù)環(huán)境時(shí),應(yīng)減少安全威脅。如果攻擊者無(wú)法直接訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),這樣就降低了他們攻擊的靈活性。我們?yōu)楣粽咛峁┑幕顒?dòng)空間越大,他們就越容易得手。同樣的,從相反的角度來(lái)看,我們就需要在后續(xù)做更多的工作,也就是說(shuō)你必須確保對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)僅限于在需要的情況下進(jìn)行系統(tǒng)訪(fǎng)問(wèn),而且所有的訪(fǎng)問(wèn)都經(jīng)過(guò)認(rèn)證和加密的,而且不能影響到會(huì)話(huà)池。保證網(wǎng)絡(luò)和系統(tǒng)設(shè)計(jì)的安全將會(huì)對(duì)保護(hù)數(shù)據(jù)庫(kù)大有幫助,添加了數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)路徑的限制能夠大大地降低風(fēng)險(xiǎn)。
數(shù)據(jù)庫(kù)保護(hù)的第三層措施是威脅建模。確定威脅的過(guò)程被稱(chēng)為是威脅建模,過(guò)去威脅建模是用在應(yīng)用程序安全方面,用于確定應(yīng)用程序的最高風(fēng)險(xiǎn),這樣安全人員就可以重點(diǎn)關(guān)注在這一領(lǐng)域。這個(gè)概念開(kāi)始延用到安全的其它領(lǐng)域中。應(yīng)注意的是這不是一個(gè)新的理念,實(shí)際上保險(xiǎn)行業(yè)已經(jīng)采用此理念有數(shù)百年的歷史了,我們互聯(lián)網(wǎng)行業(yè)只是最近幾年才吸納這一理念,并開(kāi)始就此主題發(fā)表了許多文章。
威脅建模包括將那些了解此應(yīng)用程序的人以及相關(guān)領(lǐng)域的專(zhuān)家召集在一起,大家共同理解應(yīng)用程序的不同部分、功能性和固有的威脅。花一定的時(shí)間來(lái)全面理解此應(yīng)用程序以及相關(guān)的威脅,可以定制出相對(duì)應(yīng)的保護(hù)和測(cè)試方案,可以節(jié)省時(shí)間或者在有限的時(shí)間和預(yù)算范圍內(nèi)最大程度地降低威脅。威脅建模對(duì)于安全人員來(lái)說(shuō)可以提供一種很好的手段來(lái)掌握全局、分解風(fēng)險(xiǎn)區(qū)域并與各小組單獨(dú)協(xié)作,確保保護(hù)措施落到實(shí)處。
在對(duì)多個(gè)應(yīng)用程序或開(kāi)發(fā)項(xiàng)目進(jìn)行威脅建模時(shí),應(yīng)作好記錄,找到應(yīng)用程序的共通性。這些共通性可以用于審查內(nèi)部數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)標(biāo)準(zhǔn)、授權(quán)訪(fǎng)問(wèn)以及優(yōu)化訪(fǎng)問(wèn)過(guò)程。
在編寫(xiě)策略時(shí)應(yīng)當(dāng)涵蓋常見(jiàn)情況,并且明確地為開(kāi)發(fā)人員和數(shù)據(jù)庫(kù)管理人員提供指導(dǎo),確保人人手中都有一份參考資料。一旦這些步驟執(zhí)行到位后,可以開(kāi)始從基礎(chǔ)做起向數(shù)據(jù)庫(kù)環(huán)境添加安全措施。
雖然各個(gè)系統(tǒng)環(huán)境都不相同,但是數(shù)據(jù)庫(kù)配置對(duì)于保護(hù)數(shù)據(jù)是最為重要的部分之一,應(yīng)當(dāng)實(shí)現(xiàn)的常見(jiàn)配置有:
1.應(yīng)當(dāng)有恰當(dāng)?shù)娜藛T維護(hù)和更新用戶(hù)名單,其中這些用戶(hù)可以訪(fǎng)問(wèn)受管理的應(yīng)用服務(wù)環(huán)境中數(shù)據(jù)庫(kù)。
2.系統(tǒng)管理員和其他相關(guān)的IT人員應(yīng)該有充分的知識(shí)、技能并理解所有的關(guān)鍵的數(shù)據(jù)庫(kù)安全要求。
3. 當(dāng)部署數(shù)據(jù)庫(kù)到受管服務(wù)環(huán)境中時(shí),應(yīng)該采用行業(yè)領(lǐng)先的配置標(biāo)準(zhǔn)和配套的內(nèi)部文檔。
4. 對(duì)于數(shù)據(jù)庫(kù)功能不需要的默認(rèn)用戶(hù)帳戶(hù),應(yīng)該鎖定或是做過(guò)期處理。
5. 對(duì)于所有仍在使用中的默認(rèn)用戶(hù)帳戶(hù),應(yīng)該主動(dòng)地變更密碼以采用強(qiáng)密碼措施。
6. 應(yīng)該給數(shù)據(jù)庫(kù)內(nèi)的管理員帳戶(hù)分配不同的密碼,這些帳戶(hù)不應(yīng)使用共享密碼或組密碼。
7. 措施要到位,用于保護(hù)數(shù)據(jù)字典以及描述數(shù)據(jù)庫(kù)中所有對(duì)象的支持性元數(shù)據(jù)。
8. 對(duì)于任何訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的基于主機(jī)的認(rèn)證措施,應(yīng)當(dāng)有足夠的適當(dāng)?shù)倪^(guò)程來(lái)確保這種訪(fǎng)問(wèn)類(lèi)型的整體安全。
9. 數(shù)據(jù)庫(kù)監(jiān)控應(yīng)到位,由能夠根據(jù)需要對(duì)相關(guān)的人員進(jìn)行告警的工具組成。
10. 保證數(shù)據(jù)庫(kù)應(yīng)用了所有相關(guān)的和關(guān)鍵的安全補(bǔ)丁。
我們需要保護(hù)重要的數(shù)據(jù)
“一定要保護(hù)好數(shù)據(jù)庫(kù)的重要數(shù)據(jù)”,因?yàn)閿?shù)據(jù)庫(kù)對(duì)于IT行業(yè)來(lái)說(shuō)就好像是保管金銀珠寶的保險(xiǎn)庫(kù)。如果保險(xiǎn)庫(kù)不安全,財(cái)寶就很容易失竊,那主人就不會(huì)開(kāi)心。
保護(hù)數(shù)據(jù)庫(kù)服務(wù)器的方式有網(wǎng)絡(luò)分段、系統(tǒng)分離,并將數(shù)據(jù)庫(kù)服務(wù)器放置在一層或多層保護(hù)網(wǎng)的后面。
有許多新的技術(shù),包括數(shù)據(jù)庫(kù)活動(dòng)監(jiān)控軟件、數(shù)據(jù)丟失防護(hù)(DLP)、將數(shù)據(jù)庫(kù)分割,放到依據(jù)數(shù)據(jù)分類(lèi)或風(fēng)險(xiǎn)模型的系統(tǒng)中,還有確保低安全性的應(yīng)用程序無(wú)法訪(fǎng)問(wèn)到高安全程度的數(shù)據(jù)庫(kù)等。
根據(jù)訪(fǎng)問(wèn)權(quán)限和賬號(hào),如果有多個(gè)部門(mén)的用戶(hù)因同一事件需要登陸進(jìn)入同一應(yīng)用程序,應(yīng)該采取保護(hù)措施,以確保一個(gè)部門(mén)的人員無(wú)法訪(fǎng)問(wèn)另一個(gè)部門(mén)的數(shù)據(jù)。這可以在數(shù)據(jù)庫(kù)層面上完成,方法是讓各個(gè)部門(mén)分別創(chuàng)建各自的數(shù)據(jù)庫(kù)或桌面;這樣的話(huà)可以實(shí)現(xiàn)數(shù)據(jù)分離,而且可以使用不同的數(shù)據(jù)庫(kù)賬號(hào)來(lái)加以保護(hù)。應(yīng)用程序可以使用單一賬號(hào)用于非認(rèn)證請(qǐng)求服務(wù),比如說(shuō)用戶(hù)登錄;一旦發(fā)生此類(lèi)情況,應(yīng)用程序可以將數(shù)據(jù)庫(kù)賬號(hào)切換至同用戶(hù)部門(mén)相關(guān)聯(lián)的另一個(gè)賬號(hào)。在設(shè)定許可權(quán)限時(shí)要防止通用賬戶(hù)訪(fǎng)問(wèn)任何公司數(shù)據(jù)。
除此之外,部門(mén)A的數(shù)據(jù)庫(kù)賬號(hào)不能訪(fǎng)問(wèn)部門(mén)B的數(shù)據(jù)。這樣就阻止了攻擊者越過(guò)公司的安全防線(xiàn)并擴(kuò)大其接觸范圍。在進(jìn)行應(yīng)用程序數(shù)據(jù)庫(kù)賬號(hào)轉(zhuǎn)換時(shí)必須非常小心,因?yàn)楣粽呖赡芡ㄟ^(guò)SQL注入攻擊來(lái)迫使應(yīng)用程序改變其連接。在某些單位,開(kāi)發(fā)人員會(huì)寫(xiě)下他們自己的SQL查詢(xún)命令,而對(duì)于其它一些單位,查詢(xún)命令是由數(shù)據(jù)庫(kù)管理員來(lái)編寫(xiě)和優(yōu)化,然后再提供給開(kāi)發(fā)者。
在最安全的環(huán)境下,這些查詢(xún)命令由數(shù)據(jù)庫(kù)管理員編寫(xiě)和執(zhí)行,作為存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程是由應(yīng)用程序執(zhí)行的預(yù)定義語(yǔ)句。這樣就使得SQL注入攻擊更加難于得到利用。在這種特殊情況下,如果沒(méi)有存儲(chǔ)過(guò)程的話(huà),攻擊者可能已經(jīng)作為管理員登錄進(jìn)入此應(yīng)用程序并且取得此數(shù)據(jù)庫(kù)完全控制權(quán),而且只需要得到管理員用戶(hù)名稱(chēng)即可實(shí)現(xiàn)。
同時(shí)還需要建立敏感數(shù)據(jù)的安全邊界。通過(guò)采取相應(yīng)的技術(shù)措施,為用戶(hù)的各種數(shù)據(jù)庫(kù)建立一個(gè)關(guān)于數(shù)據(jù)的安全邊界。我們可以將數(shù)據(jù)庫(kù)服務(wù)器置于標(biāo)準(zhǔn)的網(wǎng)絡(luò)防火墻后面,并限制訪(fǎng)問(wèn),以確保我們了解什么系統(tǒng)能夠訪(fǎng)問(wèn)你的數(shù)據(jù)庫(kù),從而降低風(fēng)險(xiǎn)。但是千萬(wàn)不要以為簡(jiǎn)單的配備一些防火墻就可以防范這些安全威脅,可能還會(huì)有其他我們未發(fā)現(xiàn)的未知風(fēng)險(xiǎn)存在!
安全人員在開(kāi)發(fā)新的安全數(shù)據(jù)安全模型時(shí),安全人員應(yīng)該進(jìn)行測(cè)試,以確保他們提供了需要的保護(hù)級(jí)別,并且沒(méi)有引入新風(fēng)險(xiǎn)。最后關(guān)于實(shí)現(xiàn)數(shù)據(jù)基于策略的自動(dòng)管理問(wèn)題,它包括數(shù)據(jù)的分類(lèi)、備份、遷移、刪除等,實(shí)現(xiàn)全面的數(shù)據(jù)存儲(chǔ)管理自動(dòng)化,這樣不但減少了人為出錯(cuò)的可能性,也提高了數(shù)據(jù)庫(kù)的安全性和可用性。使用一套優(yōu)質(zhì)的解決方案按照標(biāo)準(zhǔn)的規(guī)范進(jìn)行設(shè)計(jì)和部署,提供充分的靈活性、擴(kuò)展性和安全性,滿(mǎn)足數(shù)據(jù)庫(kù)安全保管方面當(dāng)前和今后的法規(guī)要求。
回到源頭,WEB安全刻不容緩
最小權(quán)限原則、保護(hù)數(shù)據(jù)庫(kù)連接、分段服務(wù)器和網(wǎng)絡(luò)、安全驗(yàn)證、安全邊界和數(shù)據(jù)庫(kù)安全配置對(duì)保護(hù)數(shù)據(jù)很有用處,但是這些不會(huì)解決攻擊者所有的攻擊企圖。從廣義上講,數(shù)據(jù)庫(kù)的安全首先依賴(lài)于網(wǎng)絡(luò)系統(tǒng)。網(wǎng)絡(luò)系統(tǒng)的安全是數(shù)據(jù)庫(kù)安全的第一道屏障,外部入侵首先就是從入侵網(wǎng)絡(luò)系統(tǒng)開(kāi)始的。所以現(xiàn)在需要關(guān)注最普遍存在的威脅;WEB應(yīng)用安全。
由于某些開(kāi)發(fā)人員犯了非常低級(jí)的編程錯(cuò)誤,比如:應(yīng)用ID只能被應(yīng)用使用,而不能被單獨(dú)的用戶(hù)或是其它進(jìn)程使用。但是開(kāi)發(fā)人員不這么做,他們給予了應(yīng)用程序更多的數(shù)據(jù)訪(fǎng)問(wèn)權(quán)限。這就類(lèi)似于醫(yī)生因沒(méi)有洗手而傳播了傳染病,從而導(dǎo)致各種漏洞的出現(xiàn)。
我們必須接受已經(jīng)存在的應(yīng)用缺陷和漏洞。通過(guò)發(fā)揮數(shù)據(jù)庫(kù)管理員的安全職責(zé)去阻止因?yàn)閼?yīng)用缺陷和漏洞所造成的不良后果。比如如果開(kāi)發(fā)人員不重視應(yīng)用與數(shù)據(jù)交互的安全性,堅(jiān)持最小權(quán)限原則,數(shù)據(jù)庫(kù)管理員則有權(quán)在這場(chǎng)互動(dòng)中占取主動(dòng),不給開(kāi)發(fā)人員全權(quán)委托,數(shù)據(jù)庫(kù)管理員可以不允許那么多的交互被授權(quán);為了阻止黑客的滲透攻擊從不可避免的網(wǎng)絡(luò)程序應(yīng)用漏洞中占便宜,數(shù)據(jù)庫(kù)管理員也有權(quán)進(jìn)行其他有效的安全控制。并且數(shù)據(jù)庫(kù)管理員應(yīng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密保護(hù),如密碼不能使用明文保存;對(duì)所有應(yīng)用層和數(shù)據(jù)層通信的審計(jì)監(jiān)控將有助于快速識(shí)別和解決問(wèn)題以及準(zhǔn)確的判斷任何安全事件的范圍,直到實(shí)現(xiàn)安全風(fēng)險(xiǎn)最小化的目標(biāo)。
假如出現(xiàn)數(shù)據(jù)外泄事件(如2011年年底的CSDN等網(wǎng)站的用戶(hù)數(shù)據(jù)信息泄密事件),責(zé)任也不止是在數(shù)據(jù)庫(kù)管理員身上,開(kāi)發(fā)人員也需要共同承擔(dān)責(zé)任。其中一個(gè)非常重要的方面,開(kāi)發(fā)人員能做的就是在用戶(hù)能輸入的地方最好過(guò)濾危險(xiǎn)字符,這樣可以防止黑客通過(guò)諸如SQL注入攻擊獲取到數(shù)據(jù)庫(kù)的敏感信息。目前在各類(lèi)行業(yè)網(wǎng)站上,各種WEB應(yīng)用漏洞隨處可見(jiàn),可以被黑客們檢測(cè)到(他們一般會(huì)用軟件同時(shí)掃描數(shù)千個(gè)網(wǎng)站)。
開(kāi)發(fā)人員在完成一套新的應(yīng)用程序后應(yīng)使用安全檢測(cè)工具對(duì)其進(jìn)行反復(fù)白盒測(cè)試,有條件的情況下可以請(qǐng)信息安全人員模擬黑客進(jìn)行黑盒滲透測(cè)試,盡可能的發(fā)現(xiàn)應(yīng)用程序的弱點(diǎn)并進(jìn)行修補(bǔ)。如果想實(shí)現(xiàn)更完整的解決方案,更多有關(guān)的保護(hù)數(shù)據(jù)和數(shù)據(jù)庫(kù)是應(yīng)當(dāng)實(shí)施源代碼分析。這是一項(xiàng)冗長(zhǎng)的處理過(guò)程,可以請(qǐng)安全服務(wù)提供商用專(zhuān)業(yè)的源碼審計(jì)軟件對(duì)應(yīng)用程序代碼進(jìn)行詳細(xì)的分析處理,這些工具會(huì)直接查找出更精確的缺陷結(jié)果。
同時(shí)應(yīng)該與開(kāi)發(fā)商或者安全廠(chǎng)商合作并確保能提供安全解決方案,這對(duì)于任何致力于部署網(wǎng)絡(luò)應(yīng)用數(shù)據(jù)庫(kù)正常安全訪(fǎng)問(wèn)的用戶(hù)都至關(guān)重要,WEB應(yīng)用安全測(cè)試對(duì)于確保數(shù)據(jù)庫(kù)的安全性有至關(guān)重要的作用。
一款好的工具可以有助于加快進(jìn)度并且提供更好的檢測(cè)結(jié)果和解決方案,以提供應(yīng)用程序更好的的安全性,關(guān)鍵是進(jìn)行反復(fù)評(píng)估以確保管理工作正常,對(duì)結(jié)果實(shí)施驗(yàn)證并加固,確保風(fēng)險(xiǎn)一經(jīng)發(fā)現(xiàn)立即補(bǔ)救,并保證管理人員能夠了解到相關(guān)問(wèn)題的存在。
黑盒測(cè)試 黑盒測(cè)試是一種把軟件產(chǎn)品當(dāng)成是一個(gè)黑箱的測(cè)試技術(shù),這個(gè)黑箱有入口和出口,測(cè)試過(guò)程中只需要了解黑箱的輸入和輸出結(jié)果,不需要了解黑箱里面具體是怎樣操作的。這當(dāng)然很好,因?yàn)闇y(cè)試人員不用費(fèi)神去理解軟件里面的具體構(gòu)成和原理,測(cè)試人員只需要像用戶(hù)一樣看待軟件產(chǎn)品就行了。
例如,銀行轉(zhuǎn)賬系統(tǒng)提供給用戶(hù)轉(zhuǎn)賬的功能,則測(cè)試人員在使用黑盒測(cè)試方法時(shí),不需要知道轉(zhuǎn)賬的具體實(shí)現(xiàn)代碼是怎樣工作的,只需要把自己當(dāng)成用戶(hù),模擬盡可能多的轉(zhuǎn)賬情況來(lái)檢查這個(gè)軟件系統(tǒng)能否按要求正常實(shí)現(xiàn)轉(zhuǎn)賬功能即可。
如果只像用戶(hù)使用和操作軟件一樣去測(cè)試軟件黑盒測(cè)試可能存在一定的風(fēng)險(xiǎn)。例如,某個(gè)安全性要求比較高的軟件系統(tǒng),開(kāi)發(fā)人員在設(shè)計(jì)程序時(shí)考慮到記錄系統(tǒng)日志的必要性,把軟件運(yùn)行過(guò)程中的很多信息都記錄到了客戶(hù)端的系統(tǒng)日志中,甚至把客戶(hù)端連接服務(wù)器端的數(shù)據(jù)庫(kù)連接請(qǐng)求字符串也記錄到了系統(tǒng)日志中,像下面的一段字符串:
"Data Source=192.168.100.99;Initial Catalog=AcoDB;User ID=sa;PassWord=123456;
那么按照黑盒測(cè)試的觀(guān)點(diǎn),這是程序內(nèi)部的行為,用戶(hù)不會(huì)直接操作數(shù)據(jù)庫(kù)的連接行為,因此檢查系統(tǒng)日志方面的測(cè)試是不會(huì)做的。這明顯構(gòu)成了一個(gè)Bug,尤其是對(duì)于安全性要求高的軟件系統(tǒng),因?yàn)樗┞读撕笈_(tái)數(shù)據(jù)庫(kù)賬號(hào)信息。
有人把黑盒測(cè)試比喻成中醫(yī),做黑盒測(cè)試的測(cè)試人員應(yīng)該像一位老中醫(yī)一樣,通過(guò)“望、聞、問(wèn)、切”的方法,來(lái)判斷程序是否“有病”。這比單純的操作黑箱的方式進(jìn)了一步,這種比喻給測(cè)試人員一個(gè)啟示,不要只是簡(jiǎn)單地看和聽(tīng),還要積極地去問(wèn),積極地去發(fā)現(xiàn)、搜索相關(guān)的信息。應(yīng)該綜合應(yīng)用中醫(yī)看病的各種“技術(shù)”和理念來(lái)達(dá)到找出軟件“病癥”的目的,具體作法如下:
“望”,觀(guān)察軟件的行為是否正常;
“聞”,檢查輸出的結(jié)果是否正確;
“問(wèn)”,輸入各種信息,結(jié)合“望”、“聞”來(lái)觀(guān)察軟件的響應(yīng)程度;
“切”,像中醫(yī)一樣給軟件“把脈”,敲擊一下軟件的某些“關(guān)節(jié)”。
白盒測(cè)試如果把黑盒測(cè)試比喻成中醫(yī)看病,那么白盒測(cè)試無(wú)疑就是西醫(yī)看病了。測(cè)試人員采用各種儀器和設(shè)備對(duì)軟件進(jìn)行檢測(cè),甚至把軟件擺上手術(shù)臺(tái)解剖來(lái)看個(gè)究竟。白盒測(cè)試是一種以理解軟件內(nèi)部結(jié)構(gòu)和程序運(yùn)行方式為基礎(chǔ)的軟件測(cè)試技術(shù),通常需要跟蹤一個(gè)輸入經(jīng)過(guò)了哪些處理,這些處理方式是否正確。
在很多測(cè)試人員,尤其是初級(jí)測(cè)試人員看來(lái),白盒測(cè)試是一種只有非常了解程序代碼的高級(jí)測(cè)試人員才能做的測(cè)試。熟悉代碼結(jié)構(gòu)和功能實(shí)現(xiàn)的過(guò)程當(dāng)然對(duì)測(cè)試有很大的幫助,但是從黑盒測(cè)試與白盒測(cè)試的區(qū)別可以看出,有些白盒測(cè)試是不需要測(cè)試人員懂得每一行程序代碼的。
如果把軟件看成一個(gè)黑箱,那么白盒測(cè)試的關(guān)鍵是給測(cè)試人員戴上一副X光透視眼鏡,測(cè)試人員通過(guò)這副X光透視眼鏡可以看清楚輸入到黑箱中的數(shù)據(jù)是怎樣流轉(zhuǎn)的。
一些測(cè)試工具就像醫(yī)院的檢測(cè)儀器一樣,可以幫助了解程序的內(nèi)部運(yùn)轉(zhuǎn)過(guò)程。例如,對(duì)于一個(gè)與SQL Server數(shù)據(jù)庫(kù)連接的軟件系統(tǒng),可以簡(jiǎn)單地把程序的作用理解為:把用戶(hù)輸入的數(shù)據(jù)通過(guò)SQL命令請(qǐng)求后臺(tái)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)把請(qǐng)求的數(shù)據(jù)返回給程序的界面層展示給用戶(hù)??梢园裇QL Server自帶的工具事件探查器當(dāng)成是一個(gè)檢查SQL數(shù)據(jù)傳輸?shù)木軆x器,它可以記錄軟件客戶(hù)端與服務(wù)器數(shù)據(jù)庫(kù)之間交互的一舉一動(dòng),從而讓測(cè)試人員可以洞悉軟件究竟做了哪些動(dòng)作。
在測(cè)試過(guò)程中,應(yīng)該綜合應(yīng)用黑盒測(cè)試方法和白盒測(cè)試方法,按需要采用不同的技術(shù)組合。不要用黑盒測(cè)試方法和白盒測(cè)試方法來(lái)劃分自己屬于哪一類(lèi)測(cè)試人員,一名優(yōu)秀的測(cè)試人員應(yīng)該懂得各種各樣的測(cè)試技術(shù)和查找Bug的手段。
最后我們談?wù)勑碌姆阑饓?wèn)題。到目前為止,我們都是側(cè)重于預(yù)防措施。但在現(xiàn)實(shí)世界中,我們不可能總是改編程序和環(huán)境,所以我們必須采用其他技術(shù)措施。這就是為什么會(huì)產(chǎn)生新的防火墻。
防火墻用于應(yīng)用程序或者監(jiān)控流量的運(yùn)行監(jiān)控,也可以在執(zhí)行運(yùn)行時(shí)進(jìn)行分析。防火墻可以找出攻擊,并阻止嘗試或修改的要求,來(lái)確保WEB服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的安全運(yùn)行。
目前不光有WEB應(yīng)用防火墻和網(wǎng)絡(luò)防火墻能防范攻擊者透過(guò)應(yīng)用層和網(wǎng)絡(luò)層的攻擊;“數(shù)據(jù)庫(kù)防火墻”也于這兩年在不斷的數(shù)據(jù)庫(kù)泄密事件中出現(xiàn)在公眾的視線(xiàn)里,國(guó)內(nèi)稱(chēng)之為“數(shù)據(jù)庫(kù)審計(jì)”產(chǎn)品,這些產(chǎn)品能給數(shù)據(jù)庫(kù)提供實(shí)時(shí)的網(wǎng)絡(luò)存儲(chǔ)與訪(fǎng)問(wèn)的安全。
任何一個(gè)好的數(shù)據(jù)庫(kù)安全策略都應(yīng)包括監(jiān)控和審計(jì),以確保保護(hù)對(duì)象正常運(yùn)行,并且運(yùn)行在正確的位置上,這也是個(gè)非常耗時(shí)的過(guò)程。由于缺乏時(shí)間和工具,大多數(shù)用戶(hù)對(duì)于數(shù)據(jù)庫(kù)配置的檢查往往也僅是抽查而已。
這里還需要指出的是目前多數(shù)人認(rèn)為“數(shù)據(jù)庫(kù)審計(jì)”等同于數(shù)據(jù)庫(kù)安全,事實(shí)上,數(shù)據(jù)庫(kù)安全遠(yuǎn)遠(yuǎn)不是數(shù)據(jù)庫(kù)審計(jì)可以搞定的,數(shù)據(jù)庫(kù)審計(jì)只是數(shù)據(jù)庫(kù)安全的一個(gè)很小的方面,之所以有時(shí)候?qū)Φ绕饋?lái),一方面是由于市場(chǎng)宣傳導(dǎo)致的誤導(dǎo),另一方面的確是這個(gè)部分的問(wèn)題比較容易產(chǎn)品化/工具化,技術(shù)實(shí)現(xiàn)相對(duì)比較成熟。數(shù)據(jù)庫(kù)安全應(yīng)該包括:數(shù)據(jù)庫(kù)資產(chǎn)管理、數(shù)據(jù)庫(kù)配置加固、職責(zé)分離、特權(quán)用戶(hù)控制、數(shù)據(jù)庫(kù)弱點(diǎn)掃描和補(bǔ)丁管理、數(shù)據(jù)庫(kù)加密、數(shù)據(jù)庫(kù)審計(jì)。
最后,我們還是回到應(yīng)用程序的安全以及與數(shù)據(jù)庫(kù)之間的相互作用問(wèn)題上。即我們必須要考慮到的問(wèn)題是應(yīng)用程序的安全以及與數(shù)據(jù)庫(kù)之間的相互作用,尤其是對(duì)于當(dāng)今流行的高度動(dòng)態(tài)的和互動(dòng)的網(wǎng)絡(luò)應(yīng)用程序而言。理解數(shù)據(jù)庫(kù)與應(yīng)用程序和系統(tǒng)環(huán)境之間的作用可以更加提升數(shù)據(jù)的安全性。
有問(wèn)題是客觀(guān)情況,其實(shí)我們需要的不是過(guò)多的責(zé)難,而是不斷改進(jìn)問(wèn)題本身,當(dāng)我們被迫把安全做的簡(jiǎn)單時(shí),我們就被迫直接面對(duì)真正的問(wèn)題。當(dāng)我們不能用表面的裝飾交差時(shí),我們就不得不做好真正的本質(zhì)部分。希望本文可以讓讀者了解到一系列管理和風(fēng)險(xiǎn)降低方面的策略,不論你是否愿意配置數(shù)據(jù)庫(kù)防火墻、進(jìn)行源代碼審記或者嚴(yán)格地控制數(shù)據(jù)庫(kù)管理系統(tǒng),其目的都是相同的:做好應(yīng)用安全和數(shù)據(jù)安全的兩位一體,保護(hù)好重要數(shù)據(jù)。
如今,許多行業(yè)用戶(hù)將大量有價(jià)值的客戶(hù)數(shù)據(jù)存儲(chǔ)于在線(xiàn)數(shù)據(jù)庫(kù),通過(guò)網(wǎng)絡(luò)應(yīng)用與外界交互。不論是通信、金融、電子政務(wù)、電子商務(wù)抑或是小小的個(gè)人博客,前端應(yīng)用程序和后臺(tái)數(shù)據(jù)庫(kù)都不可避免地結(jié)合在我們現(xiàn)在的模型中,任何一個(gè)都不可離開(kāi)另一個(gè)而單獨(dú)存在。
但是由于那些應(yīng)用程序在設(shè)計(jì)時(shí)是允許任何人、從任何地方登陸進(jìn)入訪(fǎng)問(wèn),因而也成為了通往隱藏在深處的重要數(shù)據(jù)的橋梁。比如在去年十二月,國(guó)內(nèi)最大的程序員社區(qū)網(wǎng)站CSDN就遭到了黑客從WEB應(yīng)用層的攻擊,使得包含用戶(hù)密碼的數(shù)據(jù)庫(kù)泄密。
那么如何才能使這個(gè)模型更安全呢?安恒信息專(zhuān)家將為您做詳細(xì)的解讀:使模型更安全的解決方法是讓?xiě)?yīng)用程序作為人與數(shù)據(jù)互動(dòng)的唯一接口,應(yīng)用程序界面是機(jī)器與數(shù)據(jù)互動(dòng)的唯一接口。如果不是這樣,那么數(shù)據(jù)交互就有可能不能被充分控制好,這將會(huì)是一個(gè)非?;镜臐撛诼┒?。即使訪(fǎng)問(wèn)方式定義明確,實(shí)際上應(yīng)用程序依然有無(wú)數(shù)種方式令防護(hù)數(shù)據(jù)庫(kù)失敗,最終導(dǎo)致整個(gè)系統(tǒng)被黑客竊取或破壞。
安恒信息專(zhuān)家表示,安全管理人員和開(kāi)發(fā)人員經(jīng)常忽視或者錯(cuò)誤地理解數(shù)據(jù)庫(kù),常僅僅關(guān)注于保護(hù)網(wǎng)絡(luò)應(yīng)用程序不受風(fēng)險(xiǎn)的威脅--比如說(shuō)跨站腳本攻擊或者注入攻擊,而忘記了留意數(shù)據(jù)庫(kù)本身的安全隱患。很明顯,用戶(hù)需要有專(zhuān)門(mén)的工具和策略來(lái)幫助網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā)人員保護(hù)后臺(tái)數(shù)據(jù)庫(kù)的安全性,而數(shù)據(jù)庫(kù)開(kāi)發(fā)人員必須確保他們的網(wǎng)絡(luò)接口盡可能地安全。
同時(shí)安恒信息專(zhuān)家還指出,現(xiàn)在大多數(shù)用戶(hù)都是憑感覺(jué)在運(yùn)行數(shù)據(jù)庫(kù)安全。絕大多數(shù)用戶(hù)根本沒(méi)有監(jiān)控他們的數(shù)據(jù)庫(kù)。更令人不安的是,大多數(shù)用戶(hù)甚至不知道他們的重要數(shù)據(jù)的位置,很多管理員在調(diào)查中承認(rèn)他們并不能肯定數(shù)據(jù)庫(kù)中包含著重要信息。
在多數(shù)情況下,關(guān)鍵點(diǎn)在于網(wǎng)絡(luò)應(yīng)用程序本身對(duì)于攻擊者而言沒(méi)什么價(jià)值,他們只是利用應(yīng)用程序作為竊取或破壞數(shù)據(jù)的一種手段,第一個(gè)防范措施便是確保不僅僅是數(shù)據(jù)庫(kù)管理員了解重要數(shù)據(jù)在哪里存放、如何訪(fǎng)問(wèn)到,以及面臨的實(shí)際威脅。我們通常將數(shù)據(jù)庫(kù)看作是一個(gè)黑盒子,只向需要的人和應(yīng)用程序提供訪(fǎng)問(wèn)的方法,當(dāng)選取、更新或者插入操作成功后,人們會(huì)忘記還有一些事情會(huì)發(fā)生,所以說(shuō)團(tuán)隊(duì)合作是關(guān)鍵,必須要把應(yīng)用安全和數(shù)據(jù)安全做到兩位一體。
我們所面臨的網(wǎng)絡(luò)威脅
數(shù)據(jù)庫(kù)除了有與生俱來(lái)的安全隱患以外,當(dāng)應(yīng)用程序訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí),還要考慮到更多的威脅。數(shù)據(jù)庫(kù)打補(bǔ)丁、權(quán)限管理和連接管理都是典型的數(shù)據(jù)庫(kù)安全防范措施,常見(jiàn)的由網(wǎng)絡(luò)應(yīng)用程序引發(fā)的安全威脅有SQL注入式攻擊,XSS跨站攻擊、不安全的會(huì)話(huà)處理和權(quán)限升級(jí)、目錄遍歷漏洞和敏感信息泄露等漏洞。我們會(huì)深入挖掘每一種模型,但是考慮到這些風(fēng)險(xiǎn)的存在,我們最重要的是盡可能少的給予特權(quán),通過(guò)監(jiān)控輸入數(shù)據(jù)和建立安全連接來(lái)加強(qiáng)讀取方式的安全性,同時(shí)還要限制數(shù)據(jù)庫(kù)服務(wù)器對(duì)外暴露的機(jī)率。SQL注入、跨站腳本漏洞、目錄遍歷漏洞、敏感信息泄露等漏洞
SQL注入攻擊SQL注入漏洞的產(chǎn)生原因是網(wǎng)站程序在編寫(xiě)時(shí),沒(méi)有對(duì)用戶(hù)輸入數(shù)據(jù)的合法性進(jìn)行判斷,導(dǎo)致應(yīng)用程序存在安全隱患。SQL注入漏洞攻擊的就是利用現(xiàn)有應(yīng)用程序沒(méi)有對(duì)用戶(hù)輸入數(shù)據(jù)的合法性進(jìn)行判斷,將惡意的SQL命令注入到后臺(tái)數(shù)據(jù)庫(kù)引擎執(zhí)行的黑客攻擊手段。
XSS跨站攻擊跨站腳本攻擊簡(jiǎn)稱(chēng)為XSS又叫CSS 是指服務(wù)器端的CGI程序沒(méi)有對(duì)用戶(hù)提交的變量中的HTML代碼進(jìn)行有效的過(guò)濾或轉(zhuǎn)換,允許攻擊者往WEB頁(yè)面里插入對(duì)終端用戶(hù)造成影響或損失的HTML代碼。
未驗(yàn)證輸入web請(qǐng)求信息在被Web應(yīng)用使用之前都是未驗(yàn)證的,攻擊者能夠利用其中的弱點(diǎn)攻擊服務(wù)器;攻擊者通過(guò)偽造HTTP請(qǐng)求的各個(gè)部分,例如URL,查詢(xún)字符串,頭,cookies,表單域,隱藏域等繞過(guò)站點(diǎn)的安全機(jī)制。這些常見(jiàn)的偽造輸入攻擊通常包括:強(qiáng)制瀏覽,命令插入,跨站腳本,緩沖區(qū)溢出,格式化字符串,SQL注入,cookie中毒,隱藏域操作等等。
網(wǎng)絡(luò)釣魚(yú)網(wǎng)絡(luò)釣魚(yú)是通過(guò)大量發(fā)送聲稱(chēng)來(lái)自于銀行或其他知名機(jī)構(gòu)的欺騙性垃圾郵件,意圖引誘收信人給出敏感信息(如用戶(hù)名、口令、帳號(hào) ID 、 ATM PIN 碼或信用卡詳細(xì)信息)的一種攻擊方式。最典型的網(wǎng)絡(luò)釣魚(yú)攻擊將收信人引誘到一個(gè)通過(guò)精心設(shè)計(jì)與目標(biāo)組織的網(wǎng)站非常相似的釣魚(yú)網(wǎng)站上,并獲取收信人在此網(wǎng)站上輸入的個(gè)人敏感信息,通常這個(gè)攻擊過(guò)程不會(huì)讓受害者警覺(jué)。這些個(gè)人信息對(duì)黑客們具有非常大的吸引力,因?yàn)檫@些信息使得他們可以假冒受害者進(jìn)行欺詐性金融交易,從而獲得經(jīng)濟(jì)利益。受害者經(jīng)常遭受顯著的經(jīng)濟(jì)損失或全部個(gè)人信息被竊取并用于犯罪的目的。
通過(guò)應(yīng)用程序造成隱私泄漏個(gè)人或團(tuán)體的信息被其他不應(yīng)獲得者獲取。如攻擊者通過(guò)入侵大型網(wǎng)絡(luò)社區(qū)、交友網(wǎng)站、免費(fèi)郵箱等網(wǎng)絡(luò)應(yīng)用程序獲取數(shù)據(jù)庫(kù)用戶(hù)信息,并利用獲取到的個(gè)人用戶(hù)信息進(jìn)行欺騙獲取更多的利益。
我們需要共同協(xié)作
安全問(wèn)題不是某個(gè)個(gè)人的職責(zé),關(guān)鍵需要團(tuán)隊(duì)的協(xié)作。這對(duì)于應(yīng)用程序的安全問(wèn)題來(lái)說(shuō)更是如此,信息安全人員、開(kāi)發(fā)人員、系統(tǒng)和數(shù)據(jù)庫(kù)管理員都包括在內(nèi),這就是團(tuán)隊(duì)協(xié)作。除非你所在的單位已經(jīng)擁有了一個(gè)成熟的安全環(huán)境,而且已經(jīng)使用安全類(lèi)庫(kù)來(lái)處理數(shù)據(jù)庫(kù)調(diào)用和數(shù)據(jù)驗(yàn)證,在數(shù)據(jù)庫(kù)和應(yīng)用程序之間有一層數(shù)據(jù)訪(fǎng)問(wèn)層,并確保所有的數(shù)據(jù)庫(kù)權(quán)限都受到了嚴(yán)格的限制,在這種情況下應(yīng)當(dāng)讓所有團(tuán)隊(duì)成員參與并且了解高層次的應(yīng)用程序。通過(guò)共同協(xié)作,所有人都可以了解到這些安全威脅,隨后可以共同想出更好的解決方案來(lái)應(yīng)對(duì)。所有參與網(wǎng)絡(luò)應(yīng)用和數(shù)據(jù)庫(kù)開(kāi)發(fā)維護(hù)管理的人員都應(yīng)該對(duì)目前存在的安全威脅有一個(gè)充分的認(rèn)識(shí)和理解,這是非常重要的。我們必須要確保所有人員都理解應(yīng)用程序的所有技術(shù)通信原理和數(shù)據(jù)流,了解數(shù)據(jù)從哪里來(lái),如何到那里去的,以及數(shù)據(jù)是否和多個(gè)應(yīng)用程序進(jìn)行通信。這就是關(guān)于數(shù)據(jù)庫(kù)保護(hù)的第一層措施。
數(shù)據(jù)庫(kù)保護(hù)的第二層措施是安全架構(gòu)。安全設(shè)計(jì)的基礎(chǔ)有時(shí)候也被稱(chēng)作為安全架構(gòu),也就是說(shuō)當(dāng)我們以安全的方式設(shè)計(jì)數(shù)據(jù)庫(kù)環(huán)境時(shí),應(yīng)減少安全威脅。如果攻擊者無(wú)法直接訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),這樣就降低了他們攻擊的靈活性。我們?yōu)楣粽咛峁┑幕顒?dòng)空間越大,他們就越容易得手。同樣的,從相反的角度來(lái)看,我們就需要在后續(xù)做更多的工作,也就是說(shuō)你必須確保對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)僅限于在需要的情況下進(jìn)行系統(tǒng)訪(fǎng)問(wèn),而且所有的訪(fǎng)問(wèn)都經(jīng)過(guò)認(rèn)證和加密的,而且不能影響到會(huì)話(huà)池。保證網(wǎng)絡(luò)和系統(tǒng)設(shè)計(jì)的安全將會(huì)對(duì)保護(hù)數(shù)據(jù)庫(kù)大有幫助,添加了數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)路徑的限制能夠大大地降低風(fēng)險(xiǎn)。
數(shù)據(jù)庫(kù)保護(hù)的第三層措施是威脅建模。確定威脅的過(guò)程被稱(chēng)為是威脅建模,過(guò)去威脅建模是用在應(yīng)用程序安全方面,用于確定應(yīng)用程序的最高風(fēng)險(xiǎn),這樣安全人員就可以重點(diǎn)關(guān)注在這一領(lǐng)域。這個(gè)概念開(kāi)始延用到安全的其它領(lǐng)域中。應(yīng)注意的是這不是一個(gè)新的理念,實(shí)際上保險(xiǎn)行業(yè)已經(jīng)采用此理念有數(shù)百年的歷史了,我們互聯(lián)網(wǎng)行業(yè)只是最近幾年才吸納這一理念,并開(kāi)始就此主題發(fā)表了許多文章。
威脅建模包括將那些了解此應(yīng)用程序的人以及相關(guān)領(lǐng)域的專(zhuān)家召集在一起,大家共同理解應(yīng)用程序的不同部分、功能性和固有的威脅。花一定的時(shí)間來(lái)全面理解此應(yīng)用程序以及相關(guān)的威脅,可以定制出相對(duì)應(yīng)的保護(hù)和測(cè)試方案,可以節(jié)省時(shí)間或者在有限的時(shí)間和預(yù)算范圍內(nèi)最大程度地降低威脅。威脅建模對(duì)于安全人員來(lái)說(shuō)可以提供一種很好的手段來(lái)掌握全局、分解風(fēng)險(xiǎn)區(qū)域并與各小組單獨(dú)協(xié)作,確保保護(hù)措施落到實(shí)處。
在對(duì)多個(gè)應(yīng)用程序或開(kāi)發(fā)項(xiàng)目進(jìn)行威脅建模時(shí),應(yīng)作好記錄,找到應(yīng)用程序的共通性。這些共通性可以用于審查內(nèi)部數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)標(biāo)準(zhǔn)、授權(quán)訪(fǎng)問(wèn)以及優(yōu)化訪(fǎng)問(wèn)過(guò)程。
在編寫(xiě)策略時(shí)應(yīng)當(dāng)涵蓋常見(jiàn)情況,并且明確地為開(kāi)發(fā)人員和數(shù)據(jù)庫(kù)管理人員提供指導(dǎo),確保人人手中都有一份參考資料。一旦這些步驟執(zhí)行到位后,可以開(kāi)始從基礎(chǔ)做起向數(shù)據(jù)庫(kù)環(huán)境添加安全措施。
雖然各個(gè)系統(tǒng)環(huán)境都不相同,但是數(shù)據(jù)庫(kù)配置對(duì)于保護(hù)數(shù)據(jù)是最為重要的部分之一,應(yīng)當(dāng)實(shí)現(xiàn)的常見(jiàn)配置有:
1.應(yīng)當(dāng)有恰當(dāng)?shù)娜藛T維護(hù)和更新用戶(hù)名單,其中這些用戶(hù)可以訪(fǎng)問(wèn)受管理的應(yīng)用服務(wù)環(huán)境中數(shù)據(jù)庫(kù)。
2.系統(tǒng)管理員和其他相關(guān)的IT人員應(yīng)該有充分的知識(shí)、技能并理解所有的關(guān)鍵的數(shù)據(jù)庫(kù)安全要求。
3. 當(dāng)部署數(shù)據(jù)庫(kù)到受管服務(wù)環(huán)境中時(shí),應(yīng)該采用行業(yè)領(lǐng)先的配置標(biāo)準(zhǔn)和配套的內(nèi)部文檔。
4. 對(duì)于數(shù)據(jù)庫(kù)功能不需要的默認(rèn)用戶(hù)帳戶(hù),應(yīng)該鎖定或是做過(guò)期處理。
5. 對(duì)于所有仍在使用中的默認(rèn)用戶(hù)帳戶(hù),應(yīng)該主動(dòng)地變更密碼以采用強(qiáng)密碼措施。
6. 應(yīng)該給數(shù)據(jù)庫(kù)內(nèi)的管理員帳戶(hù)分配不同的密碼,這些帳戶(hù)不應(yīng)使用共享密碼或組密碼。
7. 措施要到位,用于保護(hù)數(shù)據(jù)字典以及描述數(shù)據(jù)庫(kù)中所有對(duì)象的支持性元數(shù)據(jù)。
8. 對(duì)于任何訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的基于主機(jī)的認(rèn)證措施,應(yīng)當(dāng)有足夠的適當(dāng)?shù)倪^(guò)程來(lái)確保這種訪(fǎng)問(wèn)類(lèi)型的整體安全。
9. 數(shù)據(jù)庫(kù)監(jiān)控應(yīng)到位,由能夠根據(jù)需要對(duì)相關(guān)的人員進(jìn)行告警的工具組成。
10. 保證數(shù)據(jù)庫(kù)應(yīng)用了所有相關(guān)的和關(guān)鍵的安全補(bǔ)丁。
我們需要保護(hù)重要的數(shù)據(jù)
“一定要保護(hù)好數(shù)據(jù)庫(kù)的重要數(shù)據(jù)”,因?yàn)閿?shù)據(jù)庫(kù)對(duì)于IT行業(yè)來(lái)說(shuō)就好像是保管金銀珠寶的保險(xiǎn)庫(kù)。如果保險(xiǎn)庫(kù)不安全,財(cái)寶就很容易失竊,那主人就不會(huì)開(kāi)心。
保護(hù)數(shù)據(jù)庫(kù)服務(wù)器的方式有網(wǎng)絡(luò)分段、系統(tǒng)分離,并將數(shù)據(jù)庫(kù)服務(wù)器放置在一層或多層保護(hù)網(wǎng)的后面。
有許多新的技術(shù),包括數(shù)據(jù)庫(kù)活動(dòng)監(jiān)控軟件、數(shù)據(jù)丟失防護(hù)(DLP)、將數(shù)據(jù)庫(kù)分割,放到依據(jù)數(shù)據(jù)分類(lèi)或風(fēng)險(xiǎn)模型的系統(tǒng)中,還有確保低安全性的應(yīng)用程序無(wú)法訪(fǎng)問(wèn)到高安全程度的數(shù)據(jù)庫(kù)等。
根據(jù)訪(fǎng)問(wèn)權(quán)限和賬號(hào),如果有多個(gè)部門(mén)的用戶(hù)因同一事件需要登陸進(jìn)入同一應(yīng)用程序,應(yīng)該采取保護(hù)措施,以確保一個(gè)部門(mén)的人員無(wú)法訪(fǎng)問(wèn)另一個(gè)部門(mén)的數(shù)據(jù)。這可以在數(shù)據(jù)庫(kù)層面上完成,方法是讓各個(gè)部門(mén)分別創(chuàng)建各自的數(shù)據(jù)庫(kù)或桌面;這樣的話(huà)可以實(shí)現(xiàn)數(shù)據(jù)分離,而且可以使用不同的數(shù)據(jù)庫(kù)賬號(hào)來(lái)加以保護(hù)。應(yīng)用程序可以使用單一賬號(hào)用于非認(rèn)證請(qǐng)求服務(wù),比如說(shuō)用戶(hù)登錄;一旦發(fā)生此類(lèi)情況,應(yīng)用程序可以將數(shù)據(jù)庫(kù)賬號(hào)切換至同用戶(hù)部門(mén)相關(guān)聯(lián)的另一個(gè)賬號(hào)。在設(shè)定許可權(quán)限時(shí)要防止通用賬戶(hù)訪(fǎng)問(wèn)任何公司數(shù)據(jù)。
除此之外,部門(mén)A的數(shù)據(jù)庫(kù)賬號(hào)不能訪(fǎng)問(wèn)部門(mén)B的數(shù)據(jù)。這樣就阻止了攻擊者越過(guò)公司的安全防線(xiàn)并擴(kuò)大其接觸范圍。在進(jìn)行應(yīng)用程序數(shù)據(jù)庫(kù)賬號(hào)轉(zhuǎn)換時(shí)必須非常小心,因?yàn)楣粽呖赡芡ㄟ^(guò)SQL注入攻擊來(lái)迫使應(yīng)用程序改變其連接。在某些單位,開(kāi)發(fā)人員會(huì)寫(xiě)下他們自己的SQL查詢(xún)命令,而對(duì)于其它一些單位,查詢(xún)命令是由數(shù)據(jù)庫(kù)管理員來(lái)編寫(xiě)和優(yōu)化,然后再提供給開(kāi)發(fā)者。
在最安全的環(huán)境下,這些查詢(xún)命令由數(shù)據(jù)庫(kù)管理員編寫(xiě)和執(zhí)行,作為存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程是由應(yīng)用程序執(zhí)行的預(yù)定義語(yǔ)句。這樣就使得SQL注入攻擊更加難于得到利用。在這種特殊情況下,如果沒(méi)有存儲(chǔ)過(guò)程的話(huà),攻擊者可能已經(jīng)作為管理員登錄進(jìn)入此應(yīng)用程序并且取得此數(shù)據(jù)庫(kù)完全控制權(quán),而且只需要得到管理員用戶(hù)名稱(chēng)即可實(shí)現(xiàn)。
同時(shí)還需要建立敏感數(shù)據(jù)的安全邊界。通過(guò)采取相應(yīng)的技術(shù)措施,為用戶(hù)的各種數(shù)據(jù)庫(kù)建立一個(gè)關(guān)于數(shù)據(jù)的安全邊界。我們可以將數(shù)據(jù)庫(kù)服務(wù)器置于標(biāo)準(zhǔn)的網(wǎng)絡(luò)防火墻后面,并限制訪(fǎng)問(wèn),以確保我們了解什么系統(tǒng)能夠訪(fǎng)問(wèn)你的數(shù)據(jù)庫(kù),從而降低風(fēng)險(xiǎn)。但是千萬(wàn)不要以為簡(jiǎn)單的配備一些防火墻就可以防范這些安全威脅,可能還會(huì)有其他我們未發(fā)現(xiàn)的未知風(fēng)險(xiǎn)存在!
安全人員在開(kāi)發(fā)新的安全數(shù)據(jù)安全模型時(shí),安全人員應(yīng)該進(jìn)行測(cè)試,以確保他們提供了需要的保護(hù)級(jí)別,并且沒(méi)有引入新風(fēng)險(xiǎn)。最后關(guān)于實(shí)現(xiàn)數(shù)據(jù)基于策略的自動(dòng)管理問(wèn)題,它包括數(shù)據(jù)的分類(lèi)、備份、遷移、刪除等,實(shí)現(xiàn)全面的數(shù)據(jù)存儲(chǔ)管理自動(dòng)化,這樣不但減少了人為出錯(cuò)的可能性,也提高了數(shù)據(jù)庫(kù)的安全性和可用性。使用一套優(yōu)質(zhì)的解決方案按照標(biāo)準(zhǔn)的規(guī)范進(jìn)行設(shè)計(jì)和部署,提供充分的靈活性、擴(kuò)展性和安全性,滿(mǎn)足數(shù)據(jù)庫(kù)安全保管方面當(dāng)前和今后的法規(guī)要求。
回到源頭,WEB安全刻不容緩
最小權(quán)限原則、保護(hù)數(shù)據(jù)庫(kù)連接、分段服務(wù)器和網(wǎng)絡(luò)、安全驗(yàn)證、安全邊界和數(shù)據(jù)庫(kù)安全配置對(duì)保護(hù)數(shù)據(jù)很有用處,但是這些不會(huì)解決攻擊者所有的攻擊企圖。從廣義上講,數(shù)據(jù)庫(kù)的安全首先依賴(lài)于網(wǎng)絡(luò)系統(tǒng)。網(wǎng)絡(luò)系統(tǒng)的安全是數(shù)據(jù)庫(kù)安全的第一道屏障,外部入侵首先就是從入侵網(wǎng)絡(luò)系統(tǒng)開(kāi)始的。所以現(xiàn)在需要關(guān)注最普遍存在的威脅;WEB應(yīng)用安全。
由于某些開(kāi)發(fā)人員犯了非常低級(jí)的編程錯(cuò)誤,比如:應(yīng)用ID只能被應(yīng)用使用,而不能被單獨(dú)的用戶(hù)或是其它進(jìn)程使用。但是開(kāi)發(fā)人員不這么做,他們給予了應(yīng)用程序更多的數(shù)據(jù)訪(fǎng)問(wèn)權(quán)限。這就類(lèi)似于醫(yī)生因沒(méi)有洗手而傳播了傳染病,從而導(dǎo)致各種漏洞的出現(xiàn)。
我們必須接受已經(jīng)存在的應(yīng)用缺陷和漏洞。通過(guò)發(fā)揮數(shù)據(jù)庫(kù)管理員的安全職責(zé)去阻止因?yàn)閼?yīng)用缺陷和漏洞所造成的不良后果。比如如果開(kāi)發(fā)人員不重視應(yīng)用與數(shù)據(jù)交互的安全性,堅(jiān)持最小權(quán)限原則,數(shù)據(jù)庫(kù)管理員則有權(quán)在這場(chǎng)互動(dòng)中占取主動(dòng),不給開(kāi)發(fā)人員全權(quán)委托,數(shù)據(jù)庫(kù)管理員可以不允許那么多的交互被授權(quán);為了阻止黑客的滲透攻擊從不可避免的網(wǎng)絡(luò)程序應(yīng)用漏洞中占便宜,數(shù)據(jù)庫(kù)管理員也有權(quán)進(jìn)行其他有效的安全控制。并且數(shù)據(jù)庫(kù)管理員應(yīng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密保護(hù),如密碼不能使用明文保存;對(duì)所有應(yīng)用層和數(shù)據(jù)層通信的審計(jì)監(jiān)控將有助于快速識(shí)別和解決問(wèn)題以及準(zhǔn)確的判斷任何安全事件的范圍,直到實(shí)現(xiàn)安全風(fēng)險(xiǎn)最小化的目標(biāo)。
假如出現(xiàn)數(shù)據(jù)外泄事件(如2011年年底的CSDN等網(wǎng)站的用戶(hù)數(shù)據(jù)信息泄密事件),責(zé)任也不止是在數(shù)據(jù)庫(kù)管理員身上,開(kāi)發(fā)人員也需要共同承擔(dān)責(zé)任。其中一個(gè)非常重要的方面,開(kāi)發(fā)人員能做的就是在用戶(hù)能輸入的地方最好過(guò)濾危險(xiǎn)字符,這樣可以防止黑客通過(guò)諸如SQL注入攻擊獲取到數(shù)據(jù)庫(kù)的敏感信息。目前在各類(lèi)行業(yè)網(wǎng)站上,各種WEB應(yīng)用漏洞隨處可見(jiàn),可以被黑客們檢測(cè)到(他們一般會(huì)用軟件同時(shí)掃描數(shù)千個(gè)網(wǎng)站)。
開(kāi)發(fā)人員在完成一套新的應(yīng)用程序后應(yīng)使用安全檢測(cè)工具對(duì)其進(jìn)行反復(fù)白盒測(cè)試,有條件的情況下可以請(qǐng)信息安全人員模擬黑客進(jìn)行黑盒滲透測(cè)試,盡可能的發(fā)現(xiàn)應(yīng)用程序的弱點(diǎn)并進(jìn)行修補(bǔ)。如果想實(shí)現(xiàn)更完整的解決方案,更多有關(guān)的保護(hù)數(shù)據(jù)和數(shù)據(jù)庫(kù)是應(yīng)當(dāng)實(shí)施源代碼分析。這是一項(xiàng)冗長(zhǎng)的處理過(guò)程,可以請(qǐng)安全服務(wù)提供商用專(zhuān)業(yè)的源碼審計(jì)軟件對(duì)應(yīng)用程序代碼進(jìn)行詳細(xì)的分析處理,這些工具會(huì)直接查找出更精確的缺陷結(jié)果。
同時(shí)應(yīng)該與開(kāi)發(fā)商或者安全廠(chǎng)商合作并確保能提供安全解決方案,這對(duì)于任何致力于部署網(wǎng)絡(luò)應(yīng)用數(shù)據(jù)庫(kù)正常安全訪(fǎng)問(wèn)的用戶(hù)都至關(guān)重要,WEB應(yīng)用安全測(cè)試對(duì)于確保數(shù)據(jù)庫(kù)的安全性有至關(guān)重要的作用。
一款好的工具可以有助于加快進(jìn)度并且提供更好的檢測(cè)結(jié)果和解決方案,以提供應(yīng)用程序更好的的安全性,關(guān)鍵是進(jìn)行反復(fù)評(píng)估以確保管理工作正常,對(duì)結(jié)果實(shí)施驗(yàn)證并加固,確保風(fēng)險(xiǎn)一經(jīng)發(fā)現(xiàn)立即補(bǔ)救,并保證管理人員能夠了解到相關(guān)問(wèn)題的存在。
黑盒測(cè)試 黑盒測(cè)試是一種把軟件產(chǎn)品當(dāng)成是一個(gè)黑箱的測(cè)試技術(shù),這個(gè)黑箱有入口和出口,測(cè)試過(guò)程中只需要了解黑箱的輸入和輸出結(jié)果,不需要了解黑箱里面具體是怎樣操作的。這當(dāng)然很好,因?yàn)闇y(cè)試人員不用費(fèi)神去理解軟件里面的具體構(gòu)成和原理,測(cè)試人員只需要像用戶(hù)一樣看待軟件產(chǎn)品就行了。
例如,銀行轉(zhuǎn)賬系統(tǒng)提供給用戶(hù)轉(zhuǎn)賬的功能,則測(cè)試人員在使用黑盒測(cè)試方法時(shí),不需要知道轉(zhuǎn)賬的具體實(shí)現(xiàn)代碼是怎樣工作的,只需要把自己當(dāng)成用戶(hù),模擬盡可能多的轉(zhuǎn)賬情況來(lái)檢查這個(gè)軟件系統(tǒng)能否按要求正常實(shí)現(xiàn)轉(zhuǎn)賬功能即可。
如果只像用戶(hù)使用和操作軟件一樣去測(cè)試軟件黑盒測(cè)試可能存在一定的風(fēng)險(xiǎn)。例如,某個(gè)安全性要求比較高的軟件系統(tǒng),開(kāi)發(fā)人員在設(shè)計(jì)程序時(shí)考慮到記錄系統(tǒng)日志的必要性,把軟件運(yùn)行過(guò)程中的很多信息都記錄到了客戶(hù)端的系統(tǒng)日志中,甚至把客戶(hù)端連接服務(wù)器端的數(shù)據(jù)庫(kù)連接請(qǐng)求字符串也記錄到了系統(tǒng)日志中,像下面的一段字符串:
"Data Source=192.168.100.99;Initial Catalog=AcoDB;User ID=sa;PassWord=123456;
那么按照黑盒測(cè)試的觀(guān)點(diǎn),這是程序內(nèi)部的行為,用戶(hù)不會(huì)直接操作數(shù)據(jù)庫(kù)的連接行為,因此檢查系統(tǒng)日志方面的測(cè)試是不會(huì)做的。這明顯構(gòu)成了一個(gè)Bug,尤其是對(duì)于安全性要求高的軟件系統(tǒng),因?yàn)樗┞读撕笈_(tái)數(shù)據(jù)庫(kù)賬號(hào)信息。
有人把黑盒測(cè)試比喻成中醫(yī),做黑盒測(cè)試的測(cè)試人員應(yīng)該像一位老中醫(yī)一樣,通過(guò)“望、聞、問(wèn)、切”的方法,來(lái)判斷程序是否“有病”。這比單純的操作黑箱的方式進(jìn)了一步,這種比喻給測(cè)試人員一個(gè)啟示,不要只是簡(jiǎn)單地看和聽(tīng),還要積極地去問(wèn),積極地去發(fā)現(xiàn)、搜索相關(guān)的信息。應(yīng)該綜合應(yīng)用中醫(yī)看病的各種“技術(shù)”和理念來(lái)達(dá)到找出軟件“病癥”的目的,具體作法如下:
“望”,觀(guān)察軟件的行為是否正常;
“聞”,檢查輸出的結(jié)果是否正確;
“問(wèn)”,輸入各種信息,結(jié)合“望”、“聞”來(lái)觀(guān)察軟件的響應(yīng)程度;
“切”,像中醫(yī)一樣給軟件“把脈”,敲擊一下軟件的某些“關(guān)節(jié)”。
白盒測(cè)試如果把黑盒測(cè)試比喻成中醫(yī)看病,那么白盒測(cè)試無(wú)疑就是西醫(yī)看病了。測(cè)試人員采用各種儀器和設(shè)備對(duì)軟件進(jìn)行檢測(cè),甚至把軟件擺上手術(shù)臺(tái)解剖來(lái)看個(gè)究竟。白盒測(cè)試是一種以理解軟件內(nèi)部結(jié)構(gòu)和程序運(yùn)行方式為基礎(chǔ)的軟件測(cè)試技術(shù),通常需要跟蹤一個(gè)輸入經(jīng)過(guò)了哪些處理,這些處理方式是否正確。
在很多測(cè)試人員,尤其是初級(jí)測(cè)試人員看來(lái),白盒測(cè)試是一種只有非常了解程序代碼的高級(jí)測(cè)試人員才能做的測(cè)試。熟悉代碼結(jié)構(gòu)和功能實(shí)現(xiàn)的過(guò)程當(dāng)然對(duì)測(cè)試有很大的幫助,但是從黑盒測(cè)試與白盒測(cè)試的區(qū)別可以看出,有些白盒測(cè)試是不需要測(cè)試人員懂得每一行程序代碼的。
如果把軟件看成一個(gè)黑箱,那么白盒測(cè)試的關(guān)鍵是給測(cè)試人員戴上一副X光透視眼鏡,測(cè)試人員通過(guò)這副X光透視眼鏡可以看清楚輸入到黑箱中的數(shù)據(jù)是怎樣流轉(zhuǎn)的。
一些測(cè)試工具就像醫(yī)院的檢測(cè)儀器一樣,可以幫助了解程序的內(nèi)部運(yùn)轉(zhuǎn)過(guò)程。例如,對(duì)于一個(gè)與SQL Server數(shù)據(jù)庫(kù)連接的軟件系統(tǒng),可以簡(jiǎn)單地把程序的作用理解為:把用戶(hù)輸入的數(shù)據(jù)通過(guò)SQL命令請(qǐng)求后臺(tái)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)把請(qǐng)求的數(shù)據(jù)返回給程序的界面層展示給用戶(hù)??梢园裇QL Server自帶的工具事件探查器當(dāng)成是一個(gè)檢查SQL數(shù)據(jù)傳輸?shù)木軆x器,它可以記錄軟件客戶(hù)端與服務(wù)器數(shù)據(jù)庫(kù)之間交互的一舉一動(dòng),從而讓測(cè)試人員可以洞悉軟件究竟做了哪些動(dòng)作。
在測(cè)試過(guò)程中,應(yīng)該綜合應(yīng)用黑盒測(cè)試方法和白盒測(cè)試方法,按需要采用不同的技術(shù)組合。不要用黑盒測(cè)試方法和白盒測(cè)試方法來(lái)劃分自己屬于哪一類(lèi)測(cè)試人員,一名優(yōu)秀的測(cè)試人員應(yīng)該懂得各種各樣的測(cè)試技術(shù)和查找Bug的手段。
最后我們談?wù)勑碌姆阑饓?wèn)題。到目前為止,我們都是側(cè)重于預(yù)防措施。但在現(xiàn)實(shí)世界中,我們不可能總是改編程序和環(huán)境,所以我們必須采用其他技術(shù)措施。這就是為什么會(huì)產(chǎn)生新的防火墻。
防火墻用于應(yīng)用程序或者監(jiān)控流量的運(yùn)行監(jiān)控,也可以在執(zhí)行運(yùn)行時(shí)進(jìn)行分析。防火墻可以找出攻擊,并阻止嘗試或修改的要求,來(lái)確保WEB服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的安全運(yùn)行。
目前不光有WEB應(yīng)用防火墻和網(wǎng)絡(luò)防火墻能防范攻擊者透過(guò)應(yīng)用層和網(wǎng)絡(luò)層的攻擊;“數(shù)據(jù)庫(kù)防火墻”也于這兩年在不斷的數(shù)據(jù)庫(kù)泄密事件中出現(xiàn)在公眾的視線(xiàn)里,國(guó)內(nèi)稱(chēng)之為“數(shù)據(jù)庫(kù)審計(jì)”產(chǎn)品,這些產(chǎn)品能給數(shù)據(jù)庫(kù)提供實(shí)時(shí)的網(wǎng)絡(luò)存儲(chǔ)與訪(fǎng)問(wèn)的安全。
任何一個(gè)好的數(shù)據(jù)庫(kù)安全策略都應(yīng)包括監(jiān)控和審計(jì),以確保保護(hù)對(duì)象正常運(yùn)行,并且運(yùn)行在正確的位置上,這也是個(gè)非常耗時(shí)的過(guò)程。由于缺乏時(shí)間和工具,大多數(shù)用戶(hù)對(duì)于數(shù)據(jù)庫(kù)配置的檢查往往也僅是抽查而已。
這里還需要指出的是目前多數(shù)人認(rèn)為“數(shù)據(jù)庫(kù)審計(jì)”等同于數(shù)據(jù)庫(kù)安全,事實(shí)上,數(shù)據(jù)庫(kù)安全遠(yuǎn)遠(yuǎn)不是數(shù)據(jù)庫(kù)審計(jì)可以搞定的,數(shù)據(jù)庫(kù)審計(jì)只是數(shù)據(jù)庫(kù)安全的一個(gè)很小的方面,之所以有時(shí)候?qū)Φ绕饋?lái),一方面是由于市場(chǎng)宣傳導(dǎo)致的誤導(dǎo),另一方面的確是這個(gè)部分的問(wèn)題比較容易產(chǎn)品化/工具化,技術(shù)實(shí)現(xiàn)相對(duì)比較成熟。數(shù)據(jù)庫(kù)安全應(yīng)該包括:數(shù)據(jù)庫(kù)資產(chǎn)管理、數(shù)據(jù)庫(kù)配置加固、職責(zé)分離、特權(quán)用戶(hù)控制、數(shù)據(jù)庫(kù)弱點(diǎn)掃描和補(bǔ)丁管理、數(shù)據(jù)庫(kù)加密、數(shù)據(jù)庫(kù)審計(jì)。
最后,我們還是回到應(yīng)用程序的安全以及與數(shù)據(jù)庫(kù)之間的相互作用問(wèn)題上。即我們必須要考慮到的問(wèn)題是應(yīng)用程序的安全以及與數(shù)據(jù)庫(kù)之間的相互作用,尤其是對(duì)于當(dāng)今流行的高度動(dòng)態(tài)的和互動(dòng)的網(wǎng)絡(luò)應(yīng)用程序而言。理解數(shù)據(jù)庫(kù)與應(yīng)用程序和系統(tǒng)環(huán)境之間的作用可以更加提升數(shù)據(jù)的安全性。
有問(wèn)題是客觀(guān)情況,其實(shí)我們需要的不是過(guò)多的責(zé)難,而是不斷改進(jìn)問(wèn)題本身,當(dāng)我們被迫把安全做的簡(jiǎn)單時(shí),我們就被迫直接面對(duì)真正的問(wèn)題。當(dāng)我們不能用表面的裝飾交差時(shí),我們就不得不做好真正的本質(zhì)部分。希望本文可以讓讀者了解到一系列管理和風(fēng)險(xiǎn)降低方面的策略,不論你是否愿意配置數(shù)據(jù)庫(kù)防火墻、進(jìn)行源代碼審記或者嚴(yán)格地控制數(shù)據(jù)庫(kù)管理系統(tǒng),其目的都是相同的:做好應(yīng)用安全和數(shù)據(jù)安全的兩位一體,保護(hù)好重要數(shù)據(jù)。

責(zé)任編輯:和碩涵
免責(zé)聲明:本文僅代表作者個(gè)人觀(guān)點(diǎn),與本站無(wú)關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請(qǐng)讀者僅作參考,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。
我要收藏
個(gè)贊
-
現(xiàn)貨模式下谷電用戶(hù)價(jià)值再評(píng)估
2020-10-10電力現(xiàn)貨市場(chǎng),電力交易,電力用戶(hù) -
PPT | 高校綜合能源服務(wù)有哪些解決方案?
2020-10-09綜合能源服務(wù),清潔供熱,多能互補(bǔ) -
深度文章 | “十三五”以來(lái)電力消費(fèi)增長(zhǎng)原因分析及中長(zhǎng)期展望
2020-09-27電力需求,用電量,全社會(huì)用電量
-
PPT | 高校綜合能源服務(wù)有哪些解決方案?
2020-10-09綜合能源服務(wù),清潔供熱,多能互補(bǔ) -
深度文章 | “十三五”以來(lái)電力消費(fèi)增長(zhǎng)原因分析及中長(zhǎng)期展望
2020-09-27電力需求,用電量,全社會(huì)用電量 -
我國(guó)電力改革涉及的電價(jià)問(wèn)題
-
電化學(xué)儲(chǔ)能應(yīng)用現(xiàn)狀及對(duì)策研究
2019-08-14電化學(xué)儲(chǔ)能應(yīng)用 -
《能源監(jiān)測(cè)與評(píng)價(jià)》——能源系統(tǒng)工程之預(yù)測(cè)和規(guī)劃
-
《能源監(jiān)測(cè)與評(píng)價(jià)》——能源系統(tǒng)工程之基本方法
-
貴州職稱(chēng)論文發(fā)表選擇泛亞,論文發(fā)表有保障
2019-02-20貴州職稱(chēng)論文發(fā)表 -
《電力設(shè)備管理》雜志首屆全國(guó)電力工業(yè) 特約專(zhuān)家征文
2019-01-05電力設(shè)備管理雜志 -
國(guó)內(nèi)首座蜂窩型集束煤倉(cāng)管理創(chuàng)新與實(shí)踐
-
人力資源和社會(huì)保障部:電線(xiàn)電纜制造工國(guó)家職業(yè)技能標(biāo)準(zhǔn)
-
人力資源和社會(huì)保障部:變壓器互感器制造工國(guó)家職業(yè)技能標(biāo)準(zhǔn)
-
《低壓微電網(wǎng)并網(wǎng)一體化裝置技術(shù)規(guī)范》T/CEC 150
2019-01-02低壓微電網(wǎng)技術(shù)規(guī)范