項目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范(等保三級)-_第1頁
項目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范(等保三級)-_第2頁
項目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范(等保三級)-_第3頁
項目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范(等保三級)-_第4頁
項目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范(等保三級)-_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、文檔編號:項目應(yīng)用開發(fā)等級保護規(guī)范密級:項目內(nèi)部項目應(yīng)用系統(tǒng)開發(fā)安全管理規(guī)范(信息系統(tǒng)等級保護三級二一三年四月項目應(yīng)用開發(fā)等級保護規(guī)范 目錄第1章概述 (11.1目標(biāo) (11.2適用范圍 (11.3規(guī)范引用的文件或標(biāo)準(zhǔn) (11.4術(shù)語和定義 (21.5應(yīng)用系統(tǒng)開發(fā)總體原則 (3第2章系統(tǒng)需求收集和分析階段 (52.1可行性研究分析 (52.2開發(fā)人員安全管理 (62.3建立系統(tǒng)開發(fā)安全需求分析報告 (7第3章系統(tǒng)設(shè)計階段的安全規(guī)范 (83.1單點訪問控制且無后門 (83.2人員職責(zé)和權(quán)限的定義 (83.3確保敏感系統(tǒng)的安全性 (83.4確保訪問層的安全性 (83.5確保日志管理機制健全 (83

2、.6新系統(tǒng)的容量規(guī)劃 (9第4章系統(tǒng)開發(fā)階段安全規(guī)范 (104.1系統(tǒng)開發(fā)語言 (104.2系統(tǒng)開發(fā)安全相關(guān)工具管理 (174.3控制軟件代碼程序庫 (194.4在軟件開發(fā)過程變更管理 (204.5開發(fā)版本管理 (214.6開發(fā)日志審核管理 (224.7防御后門代碼或隱藏通道 (22第5章系統(tǒng)測試階段安全規(guī)范 (245.1應(yīng)用系統(tǒng)的安全性檢測 (245.2控制測試環(huán)境 (265.3為測試使用真實的數(shù)據(jù) (265.4在軟件轉(zhuǎn)移至生產(chǎn)環(huán)境前進行測試 (275.5應(yīng)用系統(tǒng)安全質(zhì)量鑒定 (27第6章系統(tǒng)培訓(xùn)及文檔階段安全規(guī)范 (286.1新系統(tǒng)的培訓(xùn) (286.2撰寫新系統(tǒng)和系統(tǒng)改進的文檔 (28第7

3、章應(yīng)用系統(tǒng)開發(fā)外包安全控制 (29第8章附錄 (308.1參考文獻 (308.2本規(guī)范用詞說明 (32項目應(yīng)用開發(fā)等級保護規(guī)范第1章概述信息系統(tǒng)的許多的安全控制或其他安全性保證是通過系統(tǒng)的開發(fā)設(shè)計予以實現(xiàn)的。因此如果在系統(tǒng)的開發(fā)設(shè)計階段沒有對系統(tǒng)的安全性給予充分的考慮,那么系統(tǒng)本身一定會存在許多先天不足,系統(tǒng)就會漏洞百出。為確保應(yīng)用系統(tǒng)的安全,在應(yīng)用系統(tǒng)開發(fā)之前就應(yīng)確認系統(tǒng)的安全需求,并以此作為開發(fā)設(shè)計的階段的基礎(chǔ)。本規(guī)范主要規(guī)定了在系統(tǒng)開發(fā)的各個階段所應(yīng)遵守的各種安全規(guī)范,從需求分析開始,到設(shè)計,再到開發(fā)和維護以及最后的文檔等系統(tǒng)開發(fā)的各個階段分別進行闡述,并將在不同階段中所需要注意的安全問

4、題和相關(guān)的安全規(guī)范進行進一步的描述和規(guī)定。1.1目標(biāo)保護應(yīng)用系統(tǒng)開發(fā)過程的安全。具體地說就是保護應(yīng)用系統(tǒng)開發(fā)過程免受未經(jīng)授權(quán)的訪問和更改,保護系統(tǒng)開發(fā)中系統(tǒng)軟件和信息的安全,確保開發(fā)項目順利正確的實施并對開發(fā)環(huán)境進行嚴(yán)格的控制。同時確保應(yīng)用系統(tǒng)開發(fā)外包中的各項安全。1.2適用范圍本套規(guī)范適用的范圍包括了整個應(yīng)用系統(tǒng)開發(fā)過程中的安全。包括了系統(tǒng)開發(fā)可行性和需求分析階段的安全,系統(tǒng)設(shè)計階段的安全,系統(tǒng)開發(fā)階段的安全,系統(tǒng)測試階段的安全,系統(tǒng)培訓(xùn)和文檔階段的安全以及系統(tǒng)開發(fā)外包的安全規(guī)范。主要規(guī)定了應(yīng)用系統(tǒng)開發(fā)過程的安全保密,軟件的質(zhì)量的要求,系統(tǒng)和業(yè)務(wù)需求的符合性,保證敏感信息的安全,系統(tǒng)本身的穩(wěn)

5、定性和兼容性問題。1.3規(guī)范引用的文件或標(biāo)準(zhǔn)下列文件中的條款通過本標(biāo)準(zhǔn)的引用而成為本標(biāo)準(zhǔn)的條款。凡是不注日期的引用文件,其最新版本適用于本標(biāo)準(zhǔn)。GB17859-1999 計算機信息系統(tǒng)安全保護等級劃分準(zhǔn)則GB/T 9387-1995 信息處理系統(tǒng)開放系統(tǒng)互連基本參考模型(ISO7498 :1989GA/T 391-2002 計算機信息系統(tǒng)安全等級保護管理要求ISO/IEC TR 13355 信息技術(shù)安全管理指南NIST信息安全系列美國國家標(biāo)準(zhǔn)技術(shù)院英國國家信息安全標(biāo)準(zhǔn)BS7799信息安全基礎(chǔ)保護IT Baseline Protection Manual (GermanyBearingPoint

6、 Consulting 內(nèi)部信息安全標(biāo)準(zhǔn)RU Secure安全技術(shù)標(biāo)準(zhǔn)信息系統(tǒng)安全專家叢書Certificate Information Systems Security Professional1.4術(shù)語和定義訪問控制access control 一種安全保證手段,即信息系統(tǒng)的資源只能由被授權(quán)實體按授權(quán)方式進行訪問,防止對資源的未授權(quán)使用。應(yīng)用系統(tǒng)application system認證authentication a. 驗證用戶、設(shè)備和其他實體的身份;b. 驗證數(shù)據(jù)的完整性。授權(quán)authorization 給予權(quán)利,包括信息資源訪問權(quán)的授予??捎眯詀vailability 數(shù)據(jù)或資源的特性

7、,被授權(quán)實體按要求能及時訪問和使用數(shù)據(jù)或資源。緩沖器溢出buffer overflow指通過往程序的緩沖區(qū)寫超出其長度的內(nèi)容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,以達到攻擊的目的。保密性confidentiality 數(shù)據(jù)所具有的特性,即表示數(shù)據(jù)所達到的未提供或未泄露給未授權(quán)的個人、過程或其他實體的程度。隱藏通道covert channel 可用來按照違反安全策略的方式傳送!數(shù)據(jù)的傳輸信道。完整性integrity在防止非授權(quán)用戶修改或使用資源和防止授權(quán)用戶不正確地修改或使用資源的情況下,信息系統(tǒng)中的數(shù)據(jù)與在原文檔中的相同,并未遭受偶然或惡意的修改或破壞時所具的性質(zhì)。

8、敏感信息sensitive information 由權(quán)威機構(gòu)確定的必須受保護的信息,因為該信息的泄露、修改、破壞或丟失都會對人或事產(chǎn)生可預(yù)知的損害。系統(tǒng)測試system testing用于確定系統(tǒng)的安全特征按設(shè)計要求實現(xiàn)的過程。這一過程包括現(xiàn)場功能測試、滲透測試和驗證。后門代碼trapdoor 通常為測試或查找故障而設(shè)置的一種隱藏的軟件或硬件機制,它能避開計算機安全。而且它能在非常規(guī)時間點或無需常規(guī)檢查的情況下進入程序。特洛伊木馬Trojan horse 一種表面無害的程序,它包含惡性邏輯程序,導(dǎo)致未授權(quán)地收集、偽造或破壞數(shù)據(jù),以此破壞計算機安全與完整性的進程。驗證verification

9、將某一活動、處理過程或產(chǎn)品與相應(yīng)的要求或規(guī)范相比較。例:將某一規(guī)范與安全策略模型相比較,或者將目標(biāo)代碼與源代碼相比較。壓力測試于確定系統(tǒng)的薄弱環(huán)節(jié),確定系統(tǒng)在非正常條件下能夠迅速恢復(fù)到正常的運行狀態(tài)的能力。1.5應(yīng)用系統(tǒng)開發(fā)總體原則應(yīng)用系統(tǒng)的開發(fā)應(yīng)遵循一系列的總體原則,以確保開發(fā)過程中的安全。其中包括:系統(tǒng)開發(fā)應(yīng)從業(yè)務(wù)需求的角度出發(fā),不得盲目追求系統(tǒng)的先進性而忽略了系統(tǒng)的實用性。系統(tǒng)的開發(fā)是為了更好地滿足業(yè)務(wù)上的需要,而不是技術(shù)上的需要。開發(fā)的方法和管理必須規(guī)范化、合理化、制度化,從而確保開發(fā)的質(zhì)量和進度。應(yīng)保證開發(fā)的進度并按時完成。確保開發(fā)工作及時、有效且高質(zhì)量的完成。系統(tǒng)開發(fā)必須具有一定的

10、前瞻性,符合主流系統(tǒng)的發(fā)展方向。提高和加強開發(fā)人員的安全意識。確保機密信息和關(guān)鍵技術(shù)不會泄漏,特別是不可泄漏到競爭對手的手中,否則將會對公司的競爭力產(chǎn)生極大的影響。應(yīng)充分利用現(xiàn)有的資源。第2章系統(tǒng)需求收集和分析階段2.1可行性研究分析對于應(yīng)用系統(tǒng)開發(fā)項目應(yīng)進行一定的可行性分析,以保證只有在確認具備了相當(dāng)?shù)馁Y源和條件,并且有能力滿足業(yè)務(wù)上的需求的情況下才能開展開發(fā)工作。切忌盲目開發(fā),否則既浪費資源,又浪費時間??尚行匝芯恳藦募夹g(shù)、需求面、投入和影響四個方面進行考慮:根據(jù)業(yè)務(wù)上提出的需求,從技術(shù)開發(fā)的角度分析現(xiàn)有的技術(shù)手段和技術(shù)能力是否能夠?qū)崿F(xiàn)業(yè)務(wù)上所要求的系統(tǒng)功能。通??蓮囊韵氯齻€方面進行分析:

11、 人員技術(shù)能力分析,指公司內(nèi)的系統(tǒng)開發(fā)隊伍或外包的第三方開發(fā)公司是否具有足夠技術(shù)和管理能力來完成系統(tǒng)開發(fā)的任務(wù)。計算機軟件和硬件分析,指公司現(xiàn)有的軟件和硬件的性能是否足夠滿足開發(fā)相應(yīng)的系統(tǒng)的要求。管理能力分析,指現(xiàn)有的技術(shù)開發(fā)管理制度和管理流程是否成熟且標(biāo)準(zhǔn)化,是否滿足系統(tǒng)開發(fā)的要求。系統(tǒng)的開發(fā)來源于業(yè)務(wù)上的需求,因此需要對該需求進行可行性分析,以判斷需求是否明確,是否符合實際,是否在一定的時間范圍內(nèi)可以實現(xiàn)。根據(jù)業(yè)務(wù)需求和技術(shù)手段的分析,確認實現(xiàn)系統(tǒng)開發(fā)所需的投資,并確認投資的數(shù)額是否在可控制和可承受的范圍內(nèi)。所謂的影響是指社會影響,比如系統(tǒng)開發(fā)是否符合法律法規(guī)上的要求,是否和相關(guān)的管理制度

12、或行業(yè)標(biāo)準(zhǔn)相抵觸,是否符合人文或道德上的約束等。2.2開發(fā)人員安全管理在系統(tǒng)開發(fā)的過程中,應(yīng)明確不同人員的身份和職責(zé)。在系統(tǒng)開發(fā)過程中具體可分以下三種角色:項目負責(zé)人員:確保在整個系統(tǒng)開發(fā)的各個階段都實施了相關(guān)的安全措施,同時在整個系統(tǒng)開發(fā)的過程中負責(zé)整個項目的開發(fā)安全管理。系統(tǒng)開發(fā)人員:根據(jù)業(yè)務(wù)需求確保開發(fā)的系統(tǒng)能夠滿足業(yè)務(wù)上的需求和相應(yīng)的安全上的需求,同時滿足系統(tǒng)質(zhì)量上和進度上的要求。系統(tǒng)審核人員:對整個開發(fā)的過程進行審核和監(jiān)督,確保開發(fā)的質(zhì)量和開發(fā)的安全。應(yīng)根據(jù)該員工在整個開發(fā)項目中所負責(zé)的開發(fā)內(nèi)容授予其相應(yīng)的權(quán)限和所應(yīng)承擔(dān)的責(zé)任。開發(fā)人員必須負責(zé)其開發(fā)內(nèi)容的保密性,不得私自將開發(fā)的相關(guān)

13、信息泄漏出去,即使對家人或開發(fā)團隊中的其他開發(fā)人員也不得泄漏。但開發(fā)人員有責(zé)任將開發(fā)的相關(guān)信息告訴項目的負責(zé)人員或開發(fā)小組的負責(zé)人員。以書面的方式將員工的權(quán)限和相應(yīng)的責(zé)任提交給員工本人。必須嚴(yán)格規(guī)定在為企業(yè)工作期間,所有和工作相關(guān)的開發(fā)成果的所屬權(quán)都歸企業(yè)所有。應(yīng)根據(jù)員工權(quán)限和責(zé)任的大小確認是否需要簽署相關(guān)的保密協(xié)議。應(yīng)在日常工作中記錄員工與開發(fā)相關(guān)的日志信息。員工一旦離職或調(diào)動崗位應(yīng)立即收回或調(diào)整其相應(yīng)的權(quán)限。在整個開發(fā)的過程中必須完整持續(xù)地進行代碼錯誤處理所規(guī)定的流程。錯誤問題報告應(yīng)力求通俗易懂,不應(yīng)在其中包含任何系統(tǒng)細節(jié)問題。應(yīng)對重要的敏感信息進行加密保護。應(yīng)使用一些相對復(fù)雜的加密和密鑰

14、生成機制。應(yīng)單獨編寫安全性設(shè)計說明概要管理層必須確保應(yīng)用系統(tǒng)的開發(fā)和運作管理從組織人事和權(quán)限職責(zé)上分開。信息技術(shù)人員可以現(xiàn)場修復(fù)或更改偶然或惡意的數(shù)據(jù)和軟件問題。測試代碼中往往包含調(diào)試或者查錯代碼,大大增加了主機系統(tǒng)的性能負擔(dān)。開發(fā)人員不應(yīng)具有很高的權(quán)限,否則將在系統(tǒng)運行中產(chǎn)生很大的風(fēng)險。2.3建立系統(tǒng)開發(fā)安全需求分析報告安全需求計劃應(yīng)能夠達到期望的安全水平。其中包括了成本的預(yù)估,完成各個安全相關(guān)流程所需的時間。所有關(guān)于應(yīng)用系統(tǒng)的更新或改進都必須基于業(yè)務(wù)需求,并有業(yè)務(wù)事件支持。這里的業(yè)務(wù)需求不僅僅包括了系統(tǒng)的功能、性能、開發(fā)費用、開發(fā)周期等內(nèi)容,應(yīng)明確系統(tǒng)的安全要求。應(yīng)用系統(tǒng)的任何一次改進或更

15、新都應(yīng)和該業(yè)務(wù)系統(tǒng)的所有者密切相關(guān)。開發(fā)安全需求分析計劃應(yīng)由開發(fā)項目經(jīng)理和公司內(nèi)部的安全小組共同商議決定。應(yīng)確保每一個應(yīng)用系統(tǒng)的用戶都意識到系統(tǒng)的更新或改進都與其自身密切相關(guān),所有的更新或改動建議都必須基于業(yè)務(wù)需求,而不是基于所謂的“信息技術(shù)的要求”。系統(tǒng)的每一次更新或改進都必須認真對待,必須進行詳細的需求定義、需求分析以及測試評估,以保證不會對業(yè)務(wù)造成任何不良影響。業(yè)務(wù)需求是系統(tǒng)更新和改動的基礎(chǔ),因此必須清晰明確地定義業(yè)務(wù)的需求,禁止在業(yè)務(wù)需求未經(jīng)業(yè)務(wù)部門領(lǐng)導(dǎo)和主要負責(zé)人員認可的情況下,盲目地進行開發(fā)工作。第3章系統(tǒng)設(shè)計階段的安全規(guī)范3.1單點訪問控制且無后門任何用戶如果希望訪問應(yīng)用系統(tǒng)中的

16、某一部分,則必須通過統(tǒng)一且唯一的認證授權(quán)方式及流程。3.2人員職責(zé)和權(quán)限的定義由于不是所有的人員對于某一個應(yīng)用系統(tǒng)都具有同樣的訪問或使用權(quán)限,因此系統(tǒng)必須具有基于人員職責(zé)的用戶授權(quán)管理,以確保每個用戶可以訪問到其權(quán)限范圍內(nèi)的應(yīng)用系統(tǒng)部分。同時應(yīng)確保每個用戶無法訪問其權(quán)限范圍以外的應(yīng)用系統(tǒng)部分。3.3確保敏感系統(tǒng)的安全性將應(yīng)用系統(tǒng)中敏感的信息保存在服務(wù)器端以進行集中的加密的安全管理,確??蛻舳讼到y(tǒng)本身并不能存儲任何敏感的數(shù)據(jù)。3.4確保訪問層的安全性應(yīng)用系統(tǒng)不僅僅要確保系統(tǒng)模塊本身的安全性,同時還應(yīng)考慮模塊與模塊之間通訊的安全性。這種模塊與模塊之間通訊的安全性不僅僅包括了應(yīng)用系統(tǒng)內(nèi)部模塊之間通訊

17、的安全,也包括了應(yīng)用系統(tǒng)內(nèi)部模塊和外部模塊之間的通訊安全性,如主機和客戶端之間通訊的安全性、服務(wù)器和服務(wù)器間通訊的安全性,以及本地系統(tǒng)和異地系統(tǒng)之間通訊的安全性。3.5確保日志管理機制健全應(yīng)建立可根據(jù)情況自由設(shè)置的日志管理機制,也就是說日志記錄的范圍和詳細程度可以根據(jù)需求自行定制,且可以實現(xiàn)在應(yīng)用系統(tǒng)的使用過程中進行日志的定制和記錄。保留所有與系統(tǒng)開發(fā)相關(guān)的程序庫的更新審核記錄。3.6新系統(tǒng)的容量規(guī)劃容量規(guī)劃是指確定系統(tǒng)的總體規(guī)模、性能和系統(tǒng)彈性。容量規(guī)劃的具體內(nèi)容可能有所不同,但一般應(yīng)考慮以下方面:系統(tǒng)的預(yù)期存儲容量和在給定的周期中獲取生成和存儲的數(shù)據(jù)量。在線進程的數(shù)量和估計可能的占用資料系

18、統(tǒng)和網(wǎng)絡(luò)的響應(yīng)時間和性能,即端對端系統(tǒng)系統(tǒng)彈性要求和設(shè)計使用率(峰值,槽值和平均值等安全措施如加密解密數(shù)據(jù)對系統(tǒng)的影響。24x7運作要求和可接受的系統(tǒng)宕機次數(shù)(維護或者設(shè)備更新導(dǎo)致的必須性宕機規(guī)劃容量的時候關(guān)于系統(tǒng)使用的信息了解的越多越好。近來,由于互聯(lián)網(wǎng)站的使用以指數(shù)形式增長,容量規(guī)劃的變動效果不是非常顯著,有時甚至毫無用處。原因在于很難估計實際的負載。在容量估計的時候應(yīng)盡量將情況設(shè)想得復(fù)雜一些。第4章系統(tǒng)開發(fā)階段安全規(guī)范4.1系統(tǒng)開發(fā)語言程序員可使用很多指導(dǎo)規(guī)范來防止應(yīng)用程序中的普通安全問題。其中許多可以應(yīng)用于任何一種編程語言,但某些是針對特定的語言的。特定語言的指導(dǎo)規(guī)范主要集中在Perl

19、,Java和C/C+語言。大多數(shù)情況下,一般的錯誤可以避免。而這些本可以避免的錯誤常常會導(dǎo)致很多安全漏洞,從而威脅信息的保密性、完整性和可用性。在客戶機/服務(wù)器環(huán)境下,進行服務(wù)端的驗證而不是客戶端的驗證(例如基于Javascript的驗證。通過在客戶端和服務(wù)器之間放置一個代理服務(wù)器,可以很容易繞過客戶端驗證。有了代理服務(wù)器,攻擊者可以在數(shù)據(jù)被客戶端“驗證”后修改數(shù)據(jù)(與“man-in-the-middle”攻擊類似。在實際的校驗中,輸入校驗首先定義一個有效(可接受的字符集,然后檢查每個數(shù)據(jù)的字符是否在有效范圍內(nèi)。如果輸入中包含無效的字符,應(yīng)用程序應(yīng)返回錯誤頁面并說明輸入中包含無效字符。這樣進行

20、驗證的原因是定義無效的字符集比較困難,并且一些不應(yīng)有效的字符通常不會被指出。邊界檢查(例如字符串的最大長度應(yīng)在字符有效性檢查以前進行。邊界分析可以防止大多數(shù)緩沖區(qū)溢出漏洞。從環(huán)境變量獲得的數(shù)據(jù)也需要進行驗證。同時避免在環(huán)境變量中存放敏感數(shù)據(jù)(例如密碼。某些Unix系統(tǒng)(例如FreeBSD包含ps命令,可以讓用戶看到任何當(dāng)前進程的環(huán)境變量,這常常會暴露保密性信息。如果應(yīng)用程序需要連接后端數(shù)據(jù)庫,不得在代碼中使用SQL語句。使用程序以外的嵌入在代碼中的SQL語句調(diào)用特別危險,難以防止攻擊者使用輸入域或者配置文件(由應(yīng)用程序載入來執(zhí)行嵌入式的SQL攻擊。而輸入驗證有助于緩解這種風(fēng)險。當(dāng)應(yīng)用程序在實際

21、環(huán)境中開始應(yīng)用時,應(yīng)刪除所有的注釋代碼。注釋代碼是用來調(diào)試或者測試的,它們不是最終應(yīng)用程序的一部分。無論如何應(yīng)在實際的環(huán)境中刪除它們來避免意外的執(zhí)行(一般注釋標(biāo)識被刪除后就無法激活休眠的代碼,但還是存在可能性的,所以應(yīng)執(zhí)行這項工作。所有對用戶顯示的錯誤信息都不應(yīng)暴露任何關(guān)于系統(tǒng)、網(wǎng)絡(luò)或應(yīng)用程序的敏感信息。如果可能的話,應(yīng)使用包含編號的一般的錯誤信息,這種信息只有開發(fā)者和/或支持小組才能理解。一般的錯誤信息的例子是“發(fā)生了錯誤(代碼1234,請您與系統(tǒng)維護部門聯(lián)系。”對于web應(yīng)用,不要在URL上暴露任何重要信息,例如密碼、服務(wù)器名稱、IP地址或者文件系統(tǒng)路徑(暴露了web服務(wù)器的目錄結(jié)構(gòu)。這些

22、信息可以在攻擊時使用。例如下面就是一個不安全的URL:設(shè)置PATH為一個已知的值,而不僅僅是使用啟動時的缺省值。攻擊者可以在攻擊應(yīng)用程序時使用PATH變量,例如試圖執(zhí)行一個任意的程序。這些也可以應(yīng)用于大多數(shù)其他的語言。多年以來,Perl已經(jīng)成為用于系統(tǒng)管理和Web CGI開發(fā)的功能最強的編程語言之一(幾乎可以使用Perl實現(xiàn)任何功能。但其擴展應(yīng)用,即作為Internet上CGI的開發(fā)工具,使得它經(jīng)常成為web服務(wù)器上的攻擊目標(biāo)。另外,大多數(shù)CGI腳本有著比一般用戶更高的權(quán)限,導(dǎo)致它更容易受攻擊。下面列舉了一些開發(fā)者(特別是CGI程序員可以使用的主動的預(yù)防性的措施來增強Perl代碼的整體安全性(

23、請注意:這不是web服務(wù)器CGI腳本安全性的指導(dǎo)原則。Perl版本5.x包含一個叫做Taint Checking的數(shù)據(jù)驗證措施。如果起用該功能,它就不允許通過用戶輸入(任何程序外的輸入來操縱其他的外部程序(例如通過管道將數(shù)據(jù)導(dǎo)入另一個程序執(zhí)行。一般而言,程序員不能信任輸入腳本和程序的數(shù)據(jù)(叫做Tainted數(shù)據(jù),因為無法保證它不會產(chǎn)生危害(有意或者無意的。Taint驗證可以通過在命令行參數(shù)加入“-T”來開啟。例如可以Perl腳本的第一行這樣加入“-T”:#!usr/bin/perl5 -TTainted數(shù)據(jù)包括命令行參數(shù)、環(huán)境變量和來自文件的數(shù)據(jù)。引用tainted數(shù)據(jù)的變量也成為tainte

24、d數(shù)據(jù)。如果腳本試圖通過不安全的方式來使用tainted數(shù)據(jù)會產(chǎn)生一個致命錯誤(對這種情況稱為“不安全的依賴”(Insecure dependency或者其他的說法。啟用tainted驗證在有些情況下會導(dǎo)致腳本停止運行,常常是由于Perl解釋器要求所有腳本引用的外部程序的完全路徑必須在PATH環(huán)境變量中列出,同時PATH中包含的每個目錄除了目錄的所有者及相應(yīng)的所有者用戶組外無法修改。Taint驗證對于環(huán)境比較敏感,這就可能會導(dǎo)致大多數(shù)程序員不愿使用它,但是只要可能就應(yīng)使用taint驗證,特別是代碼執(zhí)行其他程序功能時(例如在CGI腳本的情況下。如果不但輸入數(shù)據(jù)不可信而且實際的代碼也不可信會產(chǎn)生什

25、么情況?例如用戶從網(wǎng)站上下載了一個ActiveX控件,而它實際是一個特洛伊木馬(Trojan horse。這種情況下taint驗證就不起作用。安全模塊讓程序員可以在Perl腳本中將不同的代碼模塊與安全對象相聯(lián)系。每個安全對象對于運行的每塊代碼建立了一個限制的環(huán)境。這與chroot在一個進程中只能在整體目錄結(jié)構(gòu)的一個子目錄中運行類似。而saft對象限制perl代碼只能在perl包結(jié)構(gòu)的某些特定包中運行。如何使用安全模式超出了本文的范圍,但程序員應(yīng)在任何時候使用這一功能。使用-w參數(shù)可以在Perl解釋腳本時顯示所有的警告信息。警告可以對以下情況產(chǎn)生:只使用了一次的變量或者完全沒有使用過的變量,未定

26、義的文件句柄,未關(guān)閉的文件句柄,或?qū)⒎菙?shù)值變量傳遞到數(shù)據(jù)變量。該功能不是針對安全處理的,但是有助于調(diào)試直接或者間接對安全有危害的錯誤。一般推薦總是使用-w 參數(shù)??稍趖aint驗證時在第一行這樣使用-w參數(shù):#!usr/bin/perl5 Tw自從1995年發(fā)布以來,Java成為簡單或者復(fù)雜網(wǎng)絡(luò)應(yīng)用的有效編程語言。它在設(shè)計時充分考慮了安全問題,因此它具有的限制特征有:收集不再使用的內(nèi)存碎片的垃圾收集器,嚴(yán)格的“sandbox”安全模型,以及在特定主機上限制應(yīng)用程序的活動的安全管理器。以下為使用中的相關(guān)的規(guī)范:Java中,如果沒有使用訪問標(biāo)識符(access modifier(private、p

27、rotected或public來聲明類、方法和屬性,那么它的默認訪問范圍是包,并且同一包中的所有類都能訪問它。必須記住雖然包有封裝功能,但它只有在每部分加載到包的代碼都由授權(quán)用戶控制時才起作用。惡意的用戶可以加入他們自己的類,從而對于包中的所有類、方法和屬性都有完全的訪問權(quán)限。Java的政策文件支持兩種控制包訪問權(quán)限的前綴。accessClassInPackagedefineClassInPackage所有標(biāo)準(zhǔn)庫中的類都默認是可以公共訪問的(除了由“sun”開頭的類。為了保證一個包的安全性,必須修改$JAVA HOME/jre/lib/security文件夾中的java.security文件。

28、該文件中的重要行是:package.access=sun.雖然該方法有作用,但仍存在問題。例如程序員在java.security文件中定義包的安全時必須十分小心。在package.access中的值是字符型的,“sun.”將保護“sun.tools”等包,但是不會對“sun”或者“sunshine”等包進行保護。另一個方法是使用JAR密封(sealing 。JAR(Java ARchive文件是一些類的打包壓縮格式的文件,與常用的ZIP格式類似。如果從一個密封(sealing的JAR文件中加載一個類,隨后同一個包的類只能從該JAR文件加載。為了起用密封(sealing,必須在建立JAR文件時這

29、樣設(shè)置密封(seal參數(shù): Sealed: true使用密封(sealing的JAR文件比權(quán)限 (permission 設(shè)置更好,因為它不需要安裝安全管理器(security manager。Java內(nèi)建的安全管理器是對應(yīng)用程序進行限制的一個方便的工具。很多情況下需要編制一個定制的安全管理器,JDK1.2及以后的版本提供了描述設(shè)置的方法而不是實施它們。這是通過Java政策文件實現(xiàn)的??梢杂谜呶募韵鄬δK化的方式控制文件系統(tǒng)和網(wǎng)絡(luò)的訪問。例如可以限制應(yīng)用程序只能修改名字是foo的文件。宜使用Java政策文件和安全管理器而不是重新創(chuàng)建一個類或者系統(tǒng)來限制對主機和網(wǎng)絡(luò)的訪問。C本質(zhì)上是不安全的編

30、程語言。例如如果不謹(jǐn)慎使用的話,其大多數(shù)標(biāo)準(zhǔn)的字符串庫函數(shù)有可能被用來進行緩沖區(qū)攻擊或者格式字符串攻擊。但是,由于其靈活性、快速和相對容易掌握,它是一個廣泛使用的編程語言。下面是針對開發(fā)安全的C語言程序的一些規(guī)范。避免使用不執(zhí)行邊界檢查的字符串函數(shù),因為它們可能被用來進行緩沖區(qū)溢出攻擊。下面是應(yīng)避免使用的函數(shù)。同時,也列出了每個函數(shù)相應(yīng)的比較安全的替換方式。不使用strcpy(,使用strncpy(不使用strcat(,使用strncat(不使用sprintf(,使用snprintf(不使用gets(,使用fgets(在上面的前三個中函數(shù)中,每個替代函數(shù)的“n”表示了使用的緩沖區(qū)的大小。最后一

31、個函數(shù)的“f”,表示格式,它允許用戶指定期望的輸入的格式。這些替換方程強制程序員定義使用的緩沖區(qū)的尺寸以及確定輸入的類型。該類攻擊往往與緩沖區(qū)溢出相關(guān),因為它們往往主要利用了某些函數(shù)的假設(shè),例如sprintf(和vsprintf(假設(shè)緩沖區(qū)的長度是無限的。然而即使使用snprintf(替換sprintf(也無法完全保護程序不受格式化字符串的攻擊。這些攻擊通過直接將格式說明符(format specifiers(%d,%s,%n等傳遞到輸出函數(shù)接收緩沖區(qū)來進行。例如,以下的代碼就是不安全的:snprintf(buffer, sizeof(buffer, string這種情況下,可以在字符串中插入

32、格式說明符來操縱內(nèi)存的棧,來寫入攻擊者的數(shù)據(jù)(這些數(shù)據(jù)中包含小的程序代碼,并可由處理器接著執(zhí)行。更多關(guān)于這些攻擊的具體內(nèi)容請見資源章節(jié)。對以上的例子建議使用下面的代碼。snprintf(buffer, sizeof(buffer, “%s”, string進行格式字符串攻擊不太容易。首先攻擊者必須能獲得內(nèi)存棧的內(nèi)容情況(從應(yīng)用導(dǎo)出或者使用調(diào)試器,然后必須知道如何精確訪問特定的內(nèi)存空間來操縱棧中的變量。推薦使用exec(函數(shù)而不是system(函數(shù)來執(zhí)行外部程序。這是因為system(接收整個命令行的隨機的緩沖區(qū)來執(zhí)行程序。snprintf(buffer, sizeof(buffer, &quo

33、t;emacs %s", filename;system(buffer;在以上的例子中,可以通過使用分號利用文件名變量在sehll中插入額外的命令(例如文件名可以是/etc/hosts; rm *,這將在顯示/etc/hosts目錄文件的同時,刪除目錄中的所有文件。而exec(函數(shù)只保證第一個參數(shù)被執(zhí)行:execl("usr/bin/emacs", "usr/bin/emacs", filename, NULL;上面的例子保證文件名僅僅作為一個參數(shù)輸入Emacs工具,同樣它在Emacs 命令中使用完全的路徑而不是使用可以被攻擊者利用的PATH環(huán)

34、境變量。進程需要訪問資源時(無論是磁盤、內(nèi)存或是文件通常需要執(zhí)行兩個步驟: 首先測試資源是否空閑可用如果可用,就訪問該資源,否則它等到資源不再使用為止再去訪問它當(dāng)另一個進程在步驟1和2之間想要訪問同一個資源時將出現(xiàn)問題,導(dǎo)致不可預(yù)測的結(jié)果。進程可能會被鎖定,或者一個進程籍此獲得了另一個進程的較大的權(quán)限而導(dǎo)致安全問題。攻擊主要集中在有較大權(quán)限的程序上(稱為setuid程序。競爭條件攻擊通常利用程序執(zhí)行時可以訪問到的資源。另外權(quán)限低的程序也存在安全風(fēng)險,因為攻擊者可能會等待有較高權(quán)限的用戶執(zhí)行那個程序(例如root,然后進行攻擊。下面的建議有助于緩解競爭條件(race condition攻擊:在進

35、行文件操作時,利用那些使用文件描述符的函數(shù)而不使用那些使用文件路徑的函數(shù)(例如使用fdopen(而不要使用fopen(。文件描述符使得惡意的用戶在文件打開時或是在原始的進程對文件進行操作前,無法使用文件連接(符號式的或是物理的來改變文件。在寫文件甚至在讀文件時宜使用fcntl(和flock(函數(shù)來對文件加鎖,這樣它們就不能被其他進程訪問。它幾乎可以建立原子級的操作。應(yīng)謹(jǐn)慎操縱臨時文件,因為它往往會導(dǎo)致競爭條件攻擊。檢驗有效的返回值非常重要。一個例子是舊的/bin/login的實現(xiàn)中不檢驗錯誤的返回值,導(dǎo)致當(dāng)它找不到/etc/passwd文件時返回root的訪問權(quán)限。如果該文件損壞了則這種情況是

36、合理的;但如果該文件存在只是無法訪問,那么這就是一個大問題。4.2系統(tǒng)開發(fā)安全相關(guān)工具管理有許多方法來確保代碼符合一定的安全級別。正如前面指出的,最好的方法之一是讓盡可能多的人來檢查代碼(而不是在QA環(huán)境中實際進行白箱或者黑箱測試。然而,有時代碼在開始實際環(huán)境的應(yīng)用前往往沒有足夠的時間,并且即使檢查代碼也會漏掉一些不易發(fā)現(xiàn)的錯誤。這些錯誤可能會對整個系統(tǒng)導(dǎo)致重大的安全問題。因此(以及其他的原因,使用源碼分析工具(Source Code Analysis Tool(SCAT來自動進行某些檢查過程很有幫助。本文介紹了一些這方面的工具。每個工具都用同樣的測試工具來檢驗,這些測試工具包含C和Java的

37、代碼段,而這些代碼段存在潛在的安全錯誤。我們比較了每個工具的測試結(jié)果,并且仔細檢查了以下的屬性:靈活性-有多種選項并能掃描多種類型的代碼的工具得分會較高。正確性-主要目標(biāo)是發(fā)現(xiàn)正確的安全問題,并且不會出現(xiàn)大量的誤報信息,或者更糟的是沒有發(fā)現(xiàn)真正的錯誤信息。容易使用-大多數(shù)情況下,程序員只需將工具指定到特定的代碼上然后選擇“掃描”。除非特別需要,程序員一般只做抽樣檢查,而無需開發(fā)復(fù)雜的測試機制。報表-掃描結(jié)果應(yīng)以一種容易理解的格式來顯示,并且最好同時提示修改每個問題的方法,并附加理由。每個工具在解析代碼上的速度可以忽略不計,所以沒有進行比較(雖然這并不包括配置掃描的時間,而MOPS在這方面相對于

38、其它工具需要更多的時間。另外,這些工具都可以免費獲得,甚至可以獲得它們的源代碼,所以不需考慮它們的成本。Pscan是一個有針對性的掃描程序,主要用于發(fā)現(xiàn)C程序中的緩沖區(qū)溢出和格式化字符串攻擊。該程序檢查所有用到標(biāo)準(zhǔn)C程序庫中的printf(函數(shù)。sprintf(buffer, variable;printf(buffer, variable;關(guān)于這些語句在緩沖區(qū)溢出和格式化字符串攻擊中怎樣被利用可以查閱相關(guān)的C和C+文檔。Pscan的一個不足是不能發(fā)現(xiàn)由于越界檢查不充分而引起的常規(guī)性緩沖區(qū)溢出。但Pscan對于緩沖區(qū)溢出和格式化字符串攻擊的定位還是相當(dāng)精準(zhǔn)和快速的。Pscan程序相對簡單,它只

39、將結(jié)果返回標(biāo)準(zhǔn)輸出,當(dāng)然也可以將其輸出到文件,并且除了說明程序員應(yīng)怎樣修正錯誤以外,不給出語句為什么出錯等類似信息。該工具一個顯著的特點是可以同時掃描多個文件??傮w而言Pscan程序相對簡單,易于使用,同時針對性很強,但是由于它能夠適用的范圍過于狹窄因此一般不推薦其在大型商業(yè)應(yīng)用中使用,而只是檢查一些相對簡單的程序片斷。Flawfinder是一個分析C程序安全隱患的靜態(tài)分析工具。和Pscan類似,該程序可以發(fā)現(xiàn)很多種類型的錯誤,除了printf(和標(biāo)準(zhǔn)的字符串函數(shù),它還可以發(fā)現(xiàn)競爭條件和系統(tǒng)調(diào)用。Flawfinder相比較Pscan,它返回的錯誤信息要豐富很多,并且也更加詳細。而這對于程序員來

40、說非常重要。Flawfinder甚至可以對程序中的弱點進行分類,例如buffer弱點、格式弱點、shell弱點等。Flawofinder是一個相當(dāng)出色的C程序檢查工具,速度會,界面友好,返回信息豐富,安裝使用相對簡單。該工具是檢查不同規(guī)模的應(yīng)用程序的首選,唯一不足的是它只能用于C程序的檢查。4.3控制軟件代碼程序庫我們通常將用于系統(tǒng)開發(fā)的軟件工具和開發(fā)平臺稱之為運作程序,因此為了降低計算機程序被破壞的可能性,應(yīng)對運作程序庫的訪問進行嚴(yán)格的控制: 嚴(yán)格的管理在開發(fā)設(shè)備上的存放開發(fā)運作程序的目錄。如果開發(fā)運作程序沒有很好的保護,則系統(tǒng)及其設(shè)置可能遭到未經(jīng)授權(quán)的訪問,并造成系統(tǒng)的安全性可靠性大大下降

41、。只有指定的人員如程序庫管理員經(jīng)過適當(dāng)?shù)墓芾硎跈?quán)后,才可以訪問運作程序庫,對運作程序庫的訪問必須結(jié)合嚴(yán)格的訪問控制技術(shù)手段和雙重訪問控制機制。嚴(yán)格管理開發(fā)部門所在區(qū)域的保安管理,防止未經(jīng)授權(quán)的人進入開發(fā)區(qū)域。嚴(yán)格管理開發(fā)用途的計算機使用,只有指定的人員才可以訪問開發(fā)用的計算機設(shè)備。嚴(yán)格管理開發(fā)運作系統(tǒng)的認證管理,建立嚴(yán)格的基于人員職責(zé)的授權(quán)等級制度,用口令或其它身份識別技術(shù)確認訪問者身份。雙重訪問控制機制就是對運作程序庫的管理需經(jīng)兩個人同時進行認證后才可通過的方式。比如對運作程序庫進行更改或刪除需要兩個人進行口令認證,系統(tǒng)才允許進行以上操作。需要進行認證的兩個人彼此不知道對方的認證口令或步驟。

42、因此該認證過程必須兩個人同時在場才可進行操作。源程序包含了系統(tǒng)及其控制如何實現(xiàn)的細節(jié),為修改系統(tǒng)提供了很好的切入點,例如設(shè)置邏輯炸彈。且如果缺少源程序代碼會使得今后應(yīng)用系統(tǒng)的維護工作十分困難甚至無法完成。因此為了降低計算機程序被破壞的可能性,應(yīng)對源程序庫的訪問進行嚴(yán)格的控制:嚴(yán)格管理在開發(fā)設(shè)備上的存放源程序的目錄。如果源程序沒有很好的保護,則系統(tǒng)及其設(shè)置可能會遭到未經(jīng)授權(quán)的訪問,并造成系統(tǒng)的安全性可靠性大大下降。只有指定的人員如程序庫管理員經(jīng)過適當(dāng)?shù)墓芾硎跈?quán)后才可以訪問源程序庫,對源程序庫的訪問必須結(jié)合進行嚴(yán)格的訪問控制技術(shù)手段和雙重訪問控制機制。各項應(yīng)用均應(yīng)指定相應(yīng)的管理員。信息技術(shù)支持人員

43、(非開發(fā)人員不應(yīng)自由訪問源程序庫。源程序庫和運作程序庫宜分開存放并且分開管理。源程序庫和運行的應(yīng)用系統(tǒng)宜分開存放且分開管理。源程序庫的更新和向程序員發(fā)布的源程序應(yīng)由指定的管理員根據(jù)一定的授權(quán)進行,不得私自進行更新或發(fā)放。應(yīng)保存所有對源程序庫進行訪問讀取或修改的日志記錄,以便日后審核。4.4在軟件開發(fā)過程變更管理a 系統(tǒng)容易受到未經(jīng)授權(quán)的變更的影響,即使是完全授權(quán)的更改也可能存在破壞性的影響,存在數(shù)據(jù)完整性的損失、應(yīng)用系統(tǒng)的不可用以及機密信息的泄漏的風(fēng)險。為了使信息系統(tǒng)的損失降至最小,組織應(yīng)對更改進行嚴(yán)格的控制,即在系統(tǒng)開發(fā)的每一個階段(可行性研究、需求分析、設(shè)計、編碼、測試、培訓(xùn)等的每一個更改

44、實施前必須經(jīng)過組織的評審與授權(quán)。b 對于敏感的應(yīng)用系統(tǒng)的更改應(yīng)由另一人員進行檢查,為了有效的進行控制,組織應(yīng)建立更改控制審批程序,對更改的申請、評審、測試、批準(zhǔn)、更改的計劃的提出和實施提出明確要求并嚴(yán)格的實施,確保安全性與控制程序不被損害,程序設(shè)計人員應(yīng)只能訪問他們工作所必需的部分,確保任何的改動都應(yīng)經(jīng)過審批的。c 更改的程序宜如下:清晰確認所有需要更改的應(yīng)用系統(tǒng)、信息、數(shù)據(jù)庫和相關(guān)的硬件設(shè)備。清晰確認更改的原因(業(yè)務(wù)上的具體流程和具體的需求或開發(fā)上的需求。由授權(quán)的用戶提交更改申請。保留相關(guān)的授權(quán)登記記錄。在正式實施之前,更改的方案必須經(jīng)過評審并通過正式的批準(zhǔn)。確保授權(quán)的用戶在實施之前確認并接

45、受更改的內(nèi)容。確保在實施的過程中,盡量減少對現(xiàn)行的業(yè)務(wù)運作系統(tǒng)的影響。確保建立的文件系統(tǒng)在完成各項更改時得到修改,舊文件被很好的歸檔或處置。保證所有的應(yīng)用系統(tǒng)升級的版本控制。確保對所有的更改請求進行審核跟蹤。確保用戶使用手冊作相應(yīng)的必要的更改。確保更改的實施選擇了適當(dāng)?shù)臅r機,以確保更改的實施不會干擾正常的業(yè)務(wù)運作。4.5開發(fā)版本管理源程序相關(guān)信息可以幫助確認系統(tǒng)問題的根源,并且一旦掌握了系統(tǒng)源程序相關(guān)信息可以清楚地了解系統(tǒng)的運行邏輯和可能的薄弱點,對系統(tǒng)的安全有很大的影響。在任何時候?qū)τ诔绦蚯鍐伪仨氝M行嚴(yán)格的控制并且及時地進行更新。對應(yīng)用系統(tǒng)開發(fā)源程序的打印資料、電子版本或者是相關(guān)的報告都必須

46、進行控制,紙質(zhì)的文件應(yīng)保存在一個安全的環(huán)境下,如保險柜等。電子文檔則應(yīng)進行一定的加密。應(yīng)用系統(tǒng)軟件開發(fā)版本升級申請。當(dāng)軟件的版本由于更新、修改等操作需要升級時必須先向相關(guān)負責(zé)人員提交申請。應(yīng)用系統(tǒng)軟件版本升級測試。對升級的應(yīng)用系統(tǒng)進行測試,確認系統(tǒng)的各種安全特性。應(yīng)用系統(tǒng)軟件版本審批。對應(yīng)用系統(tǒng)的版本的升級,應(yīng)確認當(dāng)前的版本為最新的版本,舊的版本應(yīng)進行歸檔,不得隨意丟棄或刪除。應(yīng)用系統(tǒng)軟件版本升級計劃。制定相關(guān)的升級計劃,確保將系統(tǒng)升級對業(yè)務(wù)的影響降至最低。應(yīng)用系統(tǒng)軟件版本升級實施。版本變更應(yīng)提出申請,詳見4.4“軟件開發(fā)過程變更管理規(guī)范”。應(yīng)使用軟件加鎖技術(shù)防止不同版本相互覆蓋的情況。當(dāng)版本

47、變更時應(yīng)在更新的版本中記錄變更的詳細描述。應(yīng)提供版本的合并功能。版本的更改應(yīng)只允許指定的人員進行操作。應(yīng)記錄所有的版本變更的日志,其中包括更改日期、更改前版本號、更改后版本號、更改人、審批人等信息。4.6開發(fā)日志審核管理系統(tǒng)開發(fā)中的相關(guān)日志文件應(yīng)根據(jù)開發(fā)周期定期審核。開發(fā)人員權(quán)限定期(3個月審核一次。4.7防御后門代碼或隱藏通道a 后門代碼,主要指由攻擊者在未經(jīng)許可的情況下,植入計算機系統(tǒng)的程序。利用調(diào)用環(huán)境的權(quán)利進行與其實際用途無關(guān)的拷貝、濫用或破壞數(shù)據(jù),主要有三種類型的后門程序:調(diào)試后門為了方便調(diào)試而設(shè)置的機關(guān),系統(tǒng)調(diào)試后未能及時消除。維護后門為了方便遠程維護所設(shè)置的后門,被黑客惡意利用。

48、惡意后門由設(shè)計者故意設(shè)置的機關(guān),用來監(jiān)視用戶的秘密甚至與破壞應(yīng)用系統(tǒng)。特洛伊木馬也屬于后門的一種,它是黑客攻擊計算機的重要手段之一。特洛伊木馬可以放置在正常的文件或程序中,當(dāng)用戶打開或執(zhí)行它的時候,它就會自動安裝在計算機上,使得某些人通過Internet訪問該計算機成為可能,使計算機處于一種非常危險的狀態(tài)。b 隱藏通道,主要指在計算機安全技術(shù)中,一種允許某個進程在違反安全規(guī)則的狀態(tài)下傳遞信息的通道。隱藏通道可以通過某些直接的或間接的方法暴露信息?,F(xiàn)在使用的應(yīng)用系統(tǒng)中大多數(shù)都包含一定程度的隱藏通道,他們當(dāng)中許多是無害的,像特殊的組合健可以給出軟件制作者的信息,但也有些是有害的,因此必須進行相應(yīng)的

49、防范。應(yīng)從信譽好的軟件供應(yīng)商那里購買相關(guān)的軟件或程序。應(yīng)檢驗和驗證源程序和源代碼。在系統(tǒng)正式投入使用之前應(yīng)進行評估,如一些行業(yè)的標(biāo)準(zhǔn)認證評估(產(chǎn)品安全認證、CMM認證等。在系統(tǒng)正式投入使用后,應(yīng)嚴(yán)格管理源代碼的訪問、升級和修改。應(yīng)使用可靠的開發(fā)人員操作密鑰系統(tǒng)。不應(yīng)隨便從一些不知名的網(wǎng)站上下載軟件。不應(yīng)過于相信別人,不得隨便安裝別人給的軟件,特別是不得隨便打開電子郵件中的附件,一些可執(zhí)行文件必須先進行病毒及惡意代碼的掃描。安裝并正確地使用有關(guān)的特洛伊木馬的監(jiān)測和查殺程序,現(xiàn)在大多數(shù)主流的殺病毒軟件也帶有該功能,目前比較流行的專門用于查殺特洛伊木馬的程序主要有Lockdown2000、The C

50、leaner、Trojian Defence Suit等。第5章系統(tǒng)測試階段安全規(guī)范5.1應(yīng)用系統(tǒng)的安全性檢測對軟硬件的測試必須事先有正式的測試計劃。測試計劃的一個關(guān)鍵點是測試計劃文檔不僅要包含測試的內(nèi)容同時還需要包含測試預(yù)期的結(jié)果。并且測試計劃還需要覆蓋除此之外的測試內(nèi)容和結(jié)果,使之更加全面。測試完成以后,需要對測試結(jié)果進行評估,確定其結(jié)果是否達到了預(yù)定的標(biāo)準(zhǔn)。如果達不到標(biāo)準(zhǔn),則應(yīng)對測試結(jié)果劃分一個錯誤嚴(yán)重性等級,否則無法對結(jié)果進行客觀評論。測試的過程需要用戶的參與以確保系統(tǒng)達到了業(yè)務(wù)上的需求和用戶使用的需求。因此主要分為系統(tǒng)測試和用戶接受測試。系統(tǒng)測試有很多種定義。一般而言系統(tǒng)測試可以定義

51、為:在人工環(huán)境下,測試系統(tǒng)是否能夠達到預(yù)期的要求的測試方法。從系統(tǒng)開發(fā)的角度而言,系統(tǒng)測試是指由系統(tǒng)開發(fā)人員(程序員和其它技術(shù)人員進行的,旨在確保系統(tǒng)各個模塊能夠正常運行(模塊測試以及系統(tǒng)整體能夠正常運行的測試過程。系統(tǒng)測試必須確保系統(tǒng)的每一個功能都能夠正確運行,并對所有的程序錯誤逐一分析。同時還測試系統(tǒng)的模塊和模塊之間、功能和功能之間的接口的正確性。需要注意的是系統(tǒng)測試不對系統(tǒng)總體的功能負責(zé),而只需要達到測試計劃中規(guī)定的測試準(zhǔn)則即可。a系統(tǒng)負載測試,負載表示對系統(tǒng)的要求,一般包括以下因素:程序和數(shù)據(jù)的總體存儲容量并發(fā)運行的應(yīng)用程序數(shù)量并發(fā)用戶的數(shù)量,峰值,槽值和平均值外設(shè)數(shù)量確定硬件的規(guī)模比

52、較復(fù)雜,在確定了上述因素以后,還應(yīng)確定其它類似響應(yīng)時間等因素。b壓力測試壓力測試用于確定系統(tǒng)的薄弱環(huán)節(jié),確定系統(tǒng)在非正常條件下能夠迅速恢復(fù)到正常的運行狀態(tài)的能力,類似的非正常條件可能是在系統(tǒng)宕機、網(wǎng)絡(luò)故障或者高峰載荷下的數(shù)據(jù)處理等。用戶接受測試是用戶對新系統(tǒng)或者系統(tǒng)改動正式驗收測試的過程,是任何系統(tǒng)開發(fā)項目都需要經(jīng)歷的重要階段,并且需要終端用戶的大力參與。在現(xiàn)實中, UAT需要有周密詳盡和準(zhǔn)確的測試計劃,特別是驗收的標(biāo)準(zhǔn)必須非常詳細。UAT 的最后部分往往包括并行運行,以比較開放系統(tǒng)和原有系統(tǒng)。a 盡管系統(tǒng)的用戶接受測試計劃可能隨著系統(tǒng)的不同而不同,測試必須涵蓋所有今后實際運行中可能發(fā)生的事件

53、。測試計劃一般可以在系統(tǒng)開發(fā)前制定的用戶需求說明書的基礎(chǔ)上制訂。b 對任何系統(tǒng)而言,對于出現(xiàn)的問題必須要明確要對這些問題做出哪些應(yīng)對措施以及誰來做這些應(yīng)對措施,例如用戶、項目團隊、供應(yīng)商或者是咨詢顧問等所有可能的項目參與方。c 為了更好地應(yīng)對測試過程中可能出現(xiàn)問題,最終用戶和項目團隊必須協(xié)商制定“錯誤嚴(yán)重程度”的范圍。它的取值范圍從1到6,分別表示從業(yè)務(wù)/商業(yè)影響角度評估在系統(tǒng)測試過程中發(fā)現(xiàn)問題。下文是一個成功應(yīng)用的例子,“1”表示最嚴(yán)重的錯誤,而6則表示最輕微的影響?!爸旅鼏栴}”如果該程度錯誤發(fā)生,則測試不能繼續(xù)?!爸卮髥栴}”測試可以繼續(xù),但是系統(tǒng)不能上線。“主要問題”測試可以繼續(xù),但是如果

54、不解決該問題,則系統(tǒng)上線后,可能對業(yè)務(wù)流程有嚴(yán)重破壞?!耙话阈詥栴}”除了這些問題會對既定的業(yè)務(wù)流程有一些輕微偏離外,測試可以繼續(xù),并且系統(tǒng)也可以上線?!按我獑栴}”可以繼續(xù)測試和上線,但這些問題必須修正,同時這些問題對業(yè)務(wù)流程沒有或者很少有影響?!胺埏椥詥栴}”類似顏色,字體等問題,如果這些問題對于業(yè)務(wù)需求而言特別重要,則需要將這些問題提高到較高層次。系統(tǒng)的用戶在征得主管項目的高層領(lǐng)導(dǎo)意見的前提下,必須就每類錯誤需要采取的行動和各自需要承擔(dān)的責(zé)任等問題取得一致。例如,可以要求馬上解決嚴(yán)重程度為1的問題,并停止所有測試計劃直到該層次的問題解決。注意事項:為避免類似分級問題的風(fēng)險,在測試規(guī)劃中宜給出每

55、一類問題的例子,以避免對問題分級出現(xiàn)根本性的不一致。當(dāng)有不一致的時候應(yīng)預(yù)先的準(zhǔn)備。d 最終用戶和系統(tǒng)開發(fā)上必須就每一類錯誤的數(shù)量有一個上限。注意:有些情況下用戶可能會有條件接受。這些條件可能增加了工作范圍。在這種情況下以及所有對系統(tǒng)的修正都需要非常嚴(yán)格的用戶接受測試和必要的回歸測試。測試數(shù)據(jù)將所有的測試數(shù)據(jù)進行整理歸檔,將出錯的記錄進行分析,確認問題產(chǎn)生的原因并編寫問題報告。5.2控制測試環(huán)境控制系統(tǒng)測試環(huán)境和實際工作環(huán)境應(yīng)隔離的進行控制處理,否則未經(jīng)確認的軟件修改會導(dǎo)致出現(xiàn)無法預(yù)料的問題。工作人員在兩個環(huán)境里切換,容易操作失誤,引起不必要的麻煩。開發(fā)與系統(tǒng)測試同時進行容易導(dǎo)致對系統(tǒng)狀態(tài)的錯誤

56、估計。5.3為測試使用真實的數(shù)據(jù)測試的數(shù)據(jù)通常情況下是虛構(gòu)的,但是有時候需要使用實際的操作或運作的數(shù)據(jù),當(dāng)該數(shù)據(jù)含有企業(yè)敏感信息的時候,如果不加以控制,會造成數(shù)據(jù)的泄漏。當(dāng)處于測試目的而使用真實的敏感的數(shù)據(jù)時,可以采用以下措施保護測試數(shù)據(jù)的安全:對測試的系統(tǒng)進行嚴(yán)格的訪問控制。只允許小部分的測試人員進行測試。且測試的人員應(yīng)簽訂安全保密協(xié)議。每一次將真實的運作信息復(fù)制到測試系統(tǒng)時均需要一個單獨的授權(quán)過程。測試完成后,應(yīng)立即將相關(guān)數(shù)據(jù)從測試的應(yīng)用系統(tǒng)中刪除。記錄下測試數(shù)據(jù)的復(fù)制、使用和刪除的情況,以便于審查追蹤。5.4在軟件轉(zhuǎn)移至生產(chǎn)環(huán)境前進行測試在軟件程序上線投入使用之前,必須采取切實的措施保證這些軟件接受了足夠的測試和記錄。否則就有可能導(dǎo)致非常嚴(yán)重的問題,甚至導(dǎo)致企業(yè)的日常運營中止。必須牢固樹立類似的觀點。5.5應(yīng)用系統(tǒng)安全質(zhì)量鑒定目前國際上公認的開發(fā)質(zhì)量驗證標(biāo)準(zhǔn)主要有兩種,可以根據(jù)這兩種標(biāo)準(zhǔn)確認系統(tǒng)是否已經(jīng)達到了這兩種標(biāo)準(zhǔn)的要求:ISO 9000認證體系軟件開發(fā)能力成熟度模型(CMMI第6章系統(tǒng)培訓(xùn)及文檔階段安全規(guī)范6.1新系統(tǒng)的培訓(xùn)對所有的用戶和技術(shù)人員提供關(guān)于新系統(tǒng)功能和操作方面的培訓(xùn)。必須保證所有的技術(shù)和業(yè)務(wù)用戶接受足夠的關(guān)于新系統(tǒng)或者

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論