資源描述:
《預(yù)防web應(yīng)用程序漏洞方法》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、預(yù)防Web應(yīng)用程序的漏洞方法如今的Web應(yīng)用程序可能會包含危險(xiǎn)的安全缺陷。這些應(yīng)用程序的全球化部署使其很容易遭受攻擊,這些攻擊會發(fā)現(xiàn)并惡意探測各種安全漏洞?! eb環(huán)境中兩個主要的風(fēng)險(xiǎn)在于:注入——也就是SQL注入,它會讓黑客更改發(fā)往數(shù)據(jù)庫的查詢——以及跨站腳本攻擊(XSS),它們也是最危險(xiǎn)的(Category:OWASP_Top_Ten_Project)。注入攻擊會利用有問題代碼的應(yīng)用程序來插入和執(zhí)行黑客指定的命令,從而能夠訪問關(guān)鍵的數(shù)據(jù)和資源。當(dāng)應(yīng)用程序?qū)⒂脩籼峁┑臄?shù)據(jù)不加檢驗(yàn)或編碼就發(fā)送到瀏覽器上時,會產(chǎn)生XS
2、S漏洞。 盡管2009年OWASP(OpenWebApplicationSecurityProject)的一個報(bào)告表明安全方面的投資在增加(Category:OWASP_Security_Spending_Benchmarks),但是NTAMonitor的2010Web應(yīng)用安全報(bào)名表明Web的安全性跟前一年相比實(shí)際在下降。實(shí)際上,Web應(yīng)用的漏洞給公司和組織帶來了很多的問題。按照WhiteHatSecurity最新的Web站點(diǎn)安全性數(shù)據(jù)報(bào)告所示,被評估網(wǎng)站的63%是有漏洞的,每個平均有六個未解決的缺陷。(WhiteH
3、atWebsiteSecurityStatisticsReport)。這些漏洞創(chuàng)建并維持了一個基于攻擊竊取數(shù)據(jù)和資源的地下經(jīng)濟(jì)鏈?! eb應(yīng)用程序需要有深度防御的措施來避免和減少安全性漏洞。1這種方式假設(shè)所有的安全預(yù)防措施都可能失敗,所以安全性依賴于多層的機(jī)制從而能夠覆蓋其他層的失敗。為了減少成功攻擊的可能性,軟件工程師團(tuán)隊(duì)必須做出必要的努力來引入適當(dāng)?shù)陌踩苑雷o(hù)措施。要達(dá)到這一點(diǎn)必須使用各種技術(shù)和工具來確保安全性涵蓋軟件產(chǎn)品開發(fā)生命周期的所有階段。 軟件開發(fā)生命周期中的安全性 盡管軟件開發(fā)的生命周期有多種不同的
4、劃分方式,但正如圖1所示,它通常包含如下的階段:初始化、規(guī)范和設(shè)計(jì)、實(shí)現(xiàn)(編碼)、測試、部署以及停用,這些階段應(yīng)用開發(fā)人員可以不斷地重復(fù)迭代。2 盡管開發(fā)人員應(yīng)該在產(chǎn)品的整個生命周期中都關(guān)心代碼安全性,3但是他們應(yīng)該特別關(guān)注三個關(guān)鍵階段:1實(shí)現(xiàn)。在編碼過程中,軟件開發(fā)人員必須使用特定應(yīng)用領(lǐng)域內(nèi)避免關(guān)鍵漏洞的最佳實(shí)踐。這種實(shí)踐的例子包括輸入和輸出校驗(yàn)、識別惡意字符以及使用參數(shù)化的命令。4盡管這些技術(shù)在避免大多數(shù)安全漏洞方面很有效,但因?yàn)槿狈Π踩嚓P(guān)的知識,開發(fā)人員通常并不使用它們或者使用得不正確。邊欄“為什么開發(fā)人員不
5、使用安全編碼實(shí)踐?”更詳細(xì)地討論了這個問題。測試。有很多技術(shù)可以在測試階段使用,包括滲透測試(目前最流行的技術(shù))、靜態(tài)分析、動態(tài)分析以及運(yùn)行時的異常檢測。4問題在于開發(fā)人員通常會關(guān)注需求功能的測試而忽略安全方面。另外,現(xiàn)有的自動化工具要么在漏洞探測覆蓋度方面比較差要么產(chǎn)生太多的誤報(bào)。部署。在運(yùn)行時環(huán)境中,會有不同的攻擊探測機(jī)制。這些機(jī)制可以按照不同的級別運(yùn)行并使用不同的探測方式。它們的使用障礙在于性能開銷以及不準(zhǔn)確的結(jié)果會打亂系統(tǒng)的正常行為?! ¢_發(fā)安全的代碼 為了編寫沒有漏洞的安全代碼,4基于Web基礎(chǔ)設(shè)施的關(guān)鍵業(yè)
6、務(wù)開發(fā)人員就要遵循編碼實(shí)踐,這個實(shí)踐包括了深度防御的措施,它假設(shè)所有的安全性預(yù)防措施都會失敗。在實(shí)現(xiàn)階段依賴多層的安全機(jī)制是特別重要的,使用一個預(yù)防或保護(hù)措施來避免安全漏洞是不夠的。 Web應(yīng)用程序的特征在于需要三層不同的安全防線:輸入校驗(yàn)、熱點(diǎn)保護(hù)以及輸出校驗(yàn)。 輸入校驗(yàn) 大多數(shù)的安全漏洞是因?yàn)槟繕?biāo)應(yīng)用程序沒有正確地校驗(yàn)輸入數(shù)據(jù)。1所以,應(yīng)用程序要考慮到所有惡意的輸入直到能證明其合法,這要涵蓋不可信環(huán)境中的所有數(shù)據(jù)?! ≥斎胄r?yàn)是第一道防線,總體來講就是縮小應(yīng)用程序允許輸入的范圍,它會直接作用在用戶提供的數(shù)據(jù)上
7、。這種類型的防御要依賴輸入?yún)?shù)在一個合法的范圍內(nèi),或者如果用戶提供了超出了范圍的值就會停止執(zhí)行。在Web應(yīng)用程序中,這首先要標(biāo)準(zhǔn)化輸入將其轉(zhuǎn)換到基線字符集和編碼。接下來,應(yīng)用程序必須對標(biāo)準(zhǔn)化的輸入使用過濾策略,拒絕那些值在合法范圍之外的輸入。這種方式能夠避免很多Web應(yīng)用程序中的問題,在執(zhí)行輸入校驗(yàn)時會使用正向模式匹配或正向校驗(yàn)。在這種情況下,開發(fā)人員建立規(guī)則來識別那些可接受的輸入而不是識別有什么輸入是不可接受的。盡管開發(fā)人員不能預(yù)測所有類型的攻擊,但他們應(yīng)該能夠說明所有類型的合法輸入?! £P(guān)鍵問題在于,輸入校驗(yàn)通常使
8、用地并不充分,這是因?yàn)檩斎雲(yún)?shù)的數(shù)據(jù)域允許存在惡意數(shù)據(jù),這是與校驗(yàn)執(zhí)行相獨(dú)立的。例如,在SQL注入漏洞中,大多數(shù)的SQL語句使用引號作為字符串分隔符,這就意味著黑客可以使用它來執(zhí)行SQL注入攻擊。4但是,在有些情況下,字符串輸入域必須允許存在引號值,所以應(yīng)用程序不能排除所有包含引號的值?! 狳c(diǎn)防護(hù) 為了應(yīng)對輸入校驗(yàn)的局限性,有