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