如何在交付周期中保Web應(yīng)用程序安全性(1)
Web應(yīng)用程序在一個復(fù)雜的混合性架構(gòu)中可以發(fā)揮多種不同的功能,管理與這些復(fù)雜的Web應(yīng)用程序相關(guān)的風(fēng)險是公司的必然要求,而且運(yùn)行這些Web應(yīng)用程序的底層代碼的安全性直接影響到公司應(yīng)用程序可用數(shù)據(jù)的風(fēng)險態(tài)勢。但是一直等到生命周期的生產(chǎn)階段才部署安全機(jī)制有點(diǎn)兒太遲,其效用也太小。
設(shè)計或架構(gòu)問題在生命周期的早期階段更容易解決,如果等到應(yīng)用程序投入生產(chǎn)之后再“亡羊補(bǔ)牢”,其所花費(fèi)的成本將極其高昂。Web應(yīng)用程序的安全漏洞可導(dǎo)致數(shù)據(jù)泄露、違反策略,而且,在部署后再打補(bǔ)丁或進(jìn)行全面的代碼修復(fù)都會極大地增加總成本。
為保證效益和效率,Web應(yīng)用程序的安全必須從需求的定義階段開始,直至最后的接收階段。這種方法要求全體設(shè)計人員在整個過程中能夠作為一個團(tuán)隊通力合作。在實施和測試等階段,使用遵循策略的自動化工具能夠支持可重復(fù)的測試,并且隨著測試過程的標(biāo)準(zhǔn)化可以使開發(fā)周期更快。
在開發(fā)過程的最初階段就著手構(gòu)建安全性未必很復(fù)雜。在整個開發(fā)周期實施安全檢查和平衡,可以實現(xiàn)更快的發(fā)布周期,并可以極大地減少Web應(yīng)用程序的漏洞。
在開發(fā)周期的后期實施安全測試的高昂成本
將安全檢查點(diǎn)加入到開發(fā)過程中,確實可以減少總體交付時間。這聽起來有點(diǎn)兒違反直覺,但是,在Web應(yīng)用程序部署進(jìn)入生產(chǎn)階段之后,與糾正設(shè)計錯誤和代碼錯誤相關(guān)的成本是極其高昂的。
例如,在許多開發(fā)環(huán)境中,安全和審核專家往往出現(xiàn)在開發(fā)周期結(jié)束之時。此時,應(yīng)用程序已經(jīng)完成,任何延誤都被看作是多余的瓶頸。企業(yè)方面要求軟件產(chǎn)品快速推出,這種巨大的壓力意味著可能會忽略安全控制,導(dǎo)致Web應(yīng)用程序沒有經(jīng)過恰當(dāng)?shù)陌踩珜彶椤T谶@種時間極端敏感的環(huán)境,即使掃描工具報告了大量的漏洞但卻沒有經(jīng)過驗證,也沒有確定其優(yōu)先次序,這種掃描也是弊大于利。
在開發(fā)過程的后期進(jìn)行安全審計,而不是在整個開發(fā)周期中協(xié)力完成,會導(dǎo)致發(fā)布時間延遲,特別是在發(fā)現(xiàn)了某些嚴(yán)重的錯誤時尤其如此。在開發(fā)周期的后期修復(fù)設(shè)計和編碼錯誤的成本遠(yuǎn)遠(yuǎn)高于早期發(fā)現(xiàn)錯誤所花費(fèi)的成本。
根據(jù)美國國家科學(xué)基金會的一項研究估計,如果在需求和設(shè)計階段發(fā)現(xiàn)和糾正了嚴(yán)重的軟件問題,其成本要比將軟件投入生產(chǎn)之后再發(fā)現(xiàn)問題所花費(fèi)的成本大約低100倍。
在Web應(yīng)用程序中構(gòu)建安全性時,在多數(shù)情況下,其目標(biāo)并不是構(gòu)建固若金湯的Web應(yīng)用程序,或者清除每一處可能的漏洞。相反,目標(biāo)應(yīng)當(dāng)是將所要求的特性與經(jīng)認(rèn)可的關(guān)于Web應(yīng)用程序的風(fēng)險預(yù)測匹配起來。在整個Web應(yīng)用程序的開發(fā)周期中,其目標(biāo)應(yīng)當(dāng)是實現(xiàn)軟件擔(dān)保,即與特定Web應(yīng)用程序相適應(yīng)的功能和敏感水平,能夠有理由保證軟件將會持續(xù)地實現(xiàn)其所要求的特性,即使軟件遭受攻擊也能夠如此。
整合方法的好處
當(dāng)來自不同小組的開發(fā)人員作為一個團(tuán)隊協(xié)同工作時,就會造就Web應(yīng)用程序開發(fā)過程的高效率。雖然安全專業(yè)人員常??畤@商務(wù)主管完全不理解軟件風(fēng)險,但是安全專業(yè)人員熟悉商業(yè)風(fēng)險也很重要。通過適當(dāng)?shù)能浖?dān)保水平來構(gòu)建Web應(yīng)用程序,要求在商業(yè)需要、可用性和安全性之間進(jìn)行風(fēng)險管理權(quán)衡。為了達(dá)到適當(dāng)?shù)钠胶?,必須收集所有開發(fā)人員的需求。
從軟件開發(fā)的開始階段,需求定義和應(yīng)用程序的設(shè)計就應(yīng)當(dāng)考慮安全需求以及功能需求和商業(yè)需要。在編寫代碼之前,這種信息就應(yīng)當(dāng)傳達(dá)給設(shè)計師和軟件開發(fā)人員。這種方法可以防止多數(shù)甚至是全部安全設(shè)計漏洞和架構(gòu)漏洞。然而,關(guān)注安全的軟件設(shè)計并不是排除與Web應(yīng)用程序相關(guān)的所有漏洞。開發(fā)人員自身必須接受關(guān)于安全編碼技術(shù)的培訓(xùn),以確保在應(yīng)用程序的設(shè)計期間,并不會帶來安全漏洞。
讓開發(fā)人員洞察開發(fā)語言和運(yùn)行環(huán)境的安全方法可以支持更好的編碼實踐,并會使最終的Web應(yīng)用程序出現(xiàn)的錯誤更少。將安全性納入到設(shè)計過程中的另一個效率上的利益是,能夠在需求和設(shè)計期間建立誤用情形。 在測試和接收階段這樣做可以節(jié)省時間,并有助于消除瓶頸。
【編輯推薦】