新聞中心
Michael Cobb是認證信息系統(tǒng)安全架構(gòu)專家(CISSP-ISSAP),知名的安全作家,具有十多年豐富的IT行業(yè)經(jīng)驗,并且還從事過十六年的金融行業(yè)。他是 Cobweb Applications公司的創(chuàng)始人兼常務(wù)董事,該公司主要提供IT培訓(xùn),以及數(shù)據(jù)安全和分析的支持。

問:我們正在全力打造一個安全的SQL數(shù)據(jù)庫。對于如何為此類數(shù)據(jù)庫編寫更安全的代碼,您有什么建議嗎?
答:在編寫安全的SQL數(shù)據(jù)庫代碼時,您的首要任務(wù)是要了解你需要保護什么樣的數(shù)據(jù)、為什么要保護這些數(shù)據(jù),以及為了保護它們您將要面對的是什么。這將有助于確保您能構(gòu)建一個適當(dāng)?shù)摹M足您需要的、具有特定功能和特性的安全控制機制。而在數(shù)據(jù)庫設(shè)計階段,您就應(yīng)當(dāng)進行此項分析。在分析中,識別和評估風(fēng)險的過程被稱為威脅建模(threat modeling)。
在威脅建模過程中,為了確定數(shù)據(jù)庫的潛在威脅,需要對數(shù)據(jù)庫存儲和處理的信息進行分類。這將需要您的安全維護人員和數(shù)據(jù)庫開發(fā)者從攻擊者的角度來共同分析數(shù)據(jù)庫。該過程不僅能幫助大家了解黑客攻擊數(shù)據(jù)庫的原因和方式,還能確保必要的安全控制能夠盡早適應(yīng)數(shù)據(jù)庫的設(shè)計結(jié)構(gòu)。同時,該過程還會創(chuàng)建一系列文件,以識別和調(diào)整數(shù)據(jù)庫的安全需求。
目前,對數(shù)據(jù)庫最大的威脅是SQL注入攻擊,因此您進行防護的關(guān)鍵是采用參數(shù)化存儲過程。這種方法要求使用參數(shù)和用戶定義的子程序?qū)?shù)據(jù)庫進行操作,而不是使用那些由用戶直接給定的值創(chuàng)建命令。SQL參數(shù)不僅是類型安全(type safe)的,而且還能大幅降低SQL注入攻擊的成功率。此外,SQL參數(shù)還能作為一種控制訪問數(shù)據(jù)庫的手段。
在編寫數(shù)據(jù)庫程序的代碼時,應(yīng)當(dāng)假設(shè)所有傳遞給它們的數(shù)據(jù)都來自于未受信任的來源。這意味著,所有的數(shù)據(jù)庫程序都應(yīng)驗證那些等待處理數(shù)據(jù)的類型、長度、格式和范圍。許多開發(fā)人員采用過濾已知的不安全字符的方法來凈化輸入數(shù)據(jù),但這樣做并不是很有效,因為惡意用戶通常能找到其它方法來繞過這種驗證。另一種辦法是,編寫驗證程序來檢查所有已知的安全可靠的輸入數(shù)據(jù),除此之外的任何數(shù)據(jù)都應(yīng)當(dāng)予以拒絕。數(shù)據(jù)庫應(yīng)當(dāng)記錄這些處理結(jié)果,但不要將任何系統(tǒng)信息包含在出錯消息中返回給調(diào)用該數(shù)據(jù)庫的應(yīng)用程序或用戶,因為這些系統(tǒng)信息可能對攻擊者有用。
在編寫代碼時,您需要對您的開發(fā)人員進行培訓(xùn),讓他們時刻將安全性考慮在內(nèi)。這種培訓(xùn)實際上并沒有聽起來那么花錢。因為在互聯(lián)網(wǎng)上有許多出色的免費Web應(yīng)用程序開發(fā)論壇和在線教程。這一領(lǐng)域的領(lǐng)導(dǎo)者之一是開源Web應(yīng)用程序安全計劃(Open Web Application Security Project,OWASP),其中有很多關(guān)于如何編寫更為安全的代碼的范例。即使您的開發(fā)人員可以編寫出健壯的代碼,他們?nèi)皂氂脛討B(tài)和靜態(tài)分析來檢測這些代碼在技術(shù)上和邏輯上的漏洞。
靜態(tài)分析是指在不執(zhí)行應(yīng)用程序本身的情況下審查其源代碼;而動態(tài)分析則揭示了應(yīng)用程序在運行時的自身行為以及它與其他程序和操作系統(tǒng)交互的情況。在此需要提醒注意的是,在測試一個新系統(tǒng)時,您絕不應(yīng)當(dāng)使用真實的客戶數(shù)據(jù)。最后,在開發(fā)和部署數(shù)據(jù)庫時,切勿只依賴您的開發(fā)人員來保證數(shù)據(jù)的安全,你還需要一個深度防御戰(zhàn)略來阻止可能發(fā)起攻擊的黑客。您的網(wǎng)絡(luò)管理員應(yīng)當(dāng)確保任何通過Web應(yīng)用程序訪問數(shù)據(jù)庫的賬戶都被授予了最低的訪問權(quán)限,并且在網(wǎng)絡(luò)傳輸過程中,敏感信息都是被加密的。
分享名稱:如何編寫安全的SQL數(shù)據(jù)庫代碼?
分享網(wǎng)址:http://www.5511xx.com/article/djidcgi.html


咨詢
建站咨詢
