版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第十五章軟件安全測試第十五章軟件安全測試質(zhì)量保證活動是軟件開發(fā)過程中重要的環(huán)節(jié),而軟件測試是軟件質(zhì)量保證的關(guān)鍵手段。實際上,軟件測試的工作量,在軟件開發(fā)過程中占據(jù)較大的一部分,測試做得好,會大大降低維護的成本。測試的主要目標(biāo)是找到軟件中存在的錯誤,并加以排除,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。隨著應(yīng)用的廣泛,軟件的安全性也就越來越成為軟件的關(guān)鍵質(zhì)量指標(biāo),因此,針對安全問題的測試又顯得更為重要。本章主要針對安全測試和評審問題進(jìn)行概述,首先講解了軟件測試的概念、目的、意義和方法,然后闡述了針對安全問題的軟件測試,并對這些測試方法進(jìn)行了一些分類。質(zhì)量保證活動是軟件開發(fā)過程中重要的環(huán)節(jié),而軟件測試是軟件質(zhì)量15.1軟件測試概述15.1軟件測試概述15.1.1軟件測試的概念I(lǐng)EEE對軟件測試給出的定義是:“使用人工或者自動手段來運行或測定某個系統(tǒng),其目的在于檢測該系統(tǒng)是否滿足規(guī)定的需求,或者弄清楚預(yù)期的結(jié)果與實際結(jié)果的差別?!?,因此,軟件測試,實際上是為了發(fā)現(xiàn)軟件中的錯誤,并在交付用戶使用前解決這些錯誤,這幾乎成為一個公認(rèn)的概念。這里的“錯誤”,實際上是一個廣義的概念,初學(xué)者往往會將其理解為“編碼錯誤”,實際上,能夠引起軟件錯誤的因素很多,絕不僅僅是編碼方面的原因,包括很廣泛的內(nèi)容:15.1.1軟件測試的概念I(lǐng)EEE對軟件測試給出的定義是:軟件的需求分析者曲解了用戶的需求,測試時發(fā)現(xiàn)實現(xiàn)的流程和用戶的敘述不一樣;軟件的設(shè)計者在設(shè)計時沒有考慮某些現(xiàn)場因素,導(dǎo)致軟件在真實環(huán)境下測試時無法正常運行;軟件編碼者粗心大意,將某些邏輯流程寫錯,使得程序得不到料想的結(jié)果;等等。軟件的需求分析者曲解了用戶的需求,測試時發(fā)現(xiàn)實現(xiàn)的流程和用戶15.1.2軟件測試的目的和意義由此可見,軟件測試的根本目標(biāo)是盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。GrenfordJ.Myers曾對軟件測試的目的提出過以下觀點:測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案;成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。15.1.2軟件測試的目的和意義由此可見,軟件測試的根本目不過,我們并不能說,軟件測試效果的評價指標(biāo)就是查出錯誤的個數(shù),認(rèn)為查不出錯誤的測試就是沒有價值的測試,這是片面的,因為:沒有發(fā)現(xiàn)錯誤,或者發(fā)現(xiàn)錯誤較少的測試,也是有價值的,可能說明軟件質(zhì)量較高,因此,測試同時也是評定軟件質(zhì)量的一種標(biāo)準(zhǔn);發(fā)現(xiàn)很多錯誤的測試,不一定是成功的,如果軟件本身質(zhì)量較低,那么不能通過發(fā)現(xiàn)錯誤的個數(shù)越多,來得出軟件剩下的錯誤越少的結(jié)論;當(dāng)前發(fā)現(xiàn)的錯誤越多,可能剩下的錯誤也很多。不過,我們并不能說,軟件測試效果的評價指標(biāo)就是查出錯誤的個數(shù)從另一角度講,通過軟件測試找到錯誤,我們除了能夠解決錯誤外,還可以通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,幫助軟件的生產(chǎn)者發(fā)現(xiàn)當(dāng)前軟件開發(fā)過程中的缺陷,以便及時改進(jìn);另外,通過對錯誤進(jìn)行分析,也可以幫助測試人員設(shè)計出更加有針對性的測試方法,提高測試工作的效率和效果。軟件測試的意義主要體現(xiàn)在:減少軟件中錯誤:通過軟件測試可以發(fā)現(xiàn)軟件中存在的錯誤,通過完全地修改這些錯誤,可以減少軟件中錯誤,提高軟件的可靠性;評估軟件的綜合性能:通過軟件測試,對發(fā)現(xiàn)的錯誤進(jìn)行分析和統(tǒng)計,可以評估軟件綜合性能。當(dāng)然,即使軟件測試沒有發(fā)現(xiàn)任何錯誤,也可以作為評估軟件綜合性能的手段;等等。從另一角度講,通過軟件測試找到錯誤,我們除了能夠解決錯誤外,15.1.3軟件測試方法從實際項目的測試工作劃分,軟件測試工作可以劃分為以下幾個過程:單元測試:對用軟件的每一個程序單元進(jìn)行測試,檢查各個程序模塊的正確性;并配合適當(dāng)?shù)拇a審查;集成測試:把已測試過的模塊組裝起來,以便發(fā)現(xiàn)與接口有關(guān)的問題,如:數(shù)據(jù)模塊間傳遞、模塊組合性能、模塊調(diào)用性能等;確認(rèn)測試:檢查軟件是否滿足了需求規(guī)格說明書中的各種需求,以及軟件配置是否完全、正確;該測試又叫做驗收測試,目的是驗證軟件的有效性;系統(tǒng)測試:把已經(jīng)通過驗收的軟件,放入實際運行環(huán)境中運行;用戶記錄在測試過程中遇到的一切問題,定期報告給開發(fā)者。15.1.3軟件測試方法從實際項目的測試工作劃分,軟件測試這幾個測試過程,從軟件開發(fā)生命周期的一開始就應(yīng)該執(zhí)行,因此,測試在軟件工程中的地位如圖所示:這幾個測試過程,從軟件開發(fā)生命周期的一開始就應(yīng)該執(zhí)行,因此,軟件測試的方法,可以有很多種分類,第一種分類是靜態(tài)測試方法和動態(tài)測試方法。1:靜態(tài)測試方法。該方法中,不實際運行被測試的軟件,對軟件進(jìn)行分析、檢查和審閱,來尋找邏輯錯誤。主要工作包括:對需求規(guī)格說明書、軟件設(shè)計說明書、源程序做檢查和審閱;檢查以上工作是否符合標(biāo)準(zhǔn)和規(guī)范;通過結(jié)構(gòu)分析、流圖分析等方法,指出軟件缺陷;對各種文檔進(jìn)行測試;等等。軟件測試的方法,可以有很多種分類,第一種分類是靜態(tài)測試方法和靜態(tài)測試是軟件開發(fā)中十分有效的質(zhì)量控制方法之一。該方法特別是在軟件開發(fā)生命周期的早期和中期階段非常有效。此時,由于程序還沒有編出來,可以直接運行的代碼尚未產(chǎn)生,此時又必須對設(shè)計的一些思路進(jìn)行檢查或者審核,因為初期的工作的質(zhì)量可能直接關(guān)系到軟件開發(fā)的成本,因此,在這些階段,可以大量采用靜態(tài)測試方法。靜態(tài)測試主要靠人工來完成,不過,近些年來,也開發(fā)了不少自動化的工具,進(jìn)行計算機輔助測試,但是,短期內(nèi)想要實現(xiàn)其測試的自動化,難度較大。靜態(tài)測試的質(zhì)量更多地依賴于測試的組織和測試者的水平,定性地分析軟件質(zhì)量的情況居多,具有一定的局限性。靜態(tài)測試是軟件開發(fā)中十分有效的質(zhì)量控制方法之一。該方法特別是2:動態(tài)測試法。動態(tài)測試和靜態(tài)測試不同,在測試的過程中,實際運行軟件,檢測軟件的動態(tài)行為和運行結(jié)果的正確性。動態(tài)測試包括兩個基本要素:一是被測軟件;二是在軟件運行過程中的輸入數(shù)據(jù),每一次測試需要的測試數(shù)據(jù)叫做測試用例。因此,動態(tài)測試一般在軟件編碼階段完成之后進(jìn)行。動態(tài)測試由于其比較強的錯誤檢測能力,受到了廣泛的采用。動態(tài)測試的過程是:設(shè)計一個測試用例,輸入到程序中;看預(yù)期結(jié)果和實際運行結(jié)果是否一樣;得出最后結(jié)論。動態(tài)測試方法中,其最大的難度是測試用例的設(shè)計,因為如果要進(jìn)行窮舉性測試,完全是不可能的。2:動態(tài)測試法。另一種分類方法是從對程序內(nèi)部結(jié)構(gòu)的可見性來分,分為黑盒測試和白盒測試。1:黑盒測試方法。黑盒測試又稱為功能測試。用該方法進(jìn)行測試時,被測程序被當(dāng)做一個黑盒,測試者無需知道程序內(nèi)部結(jié)構(gòu),只需要知道程序的輸入、以及輸出是否和預(yù)期輸出相符。用例設(shè)計方法有:等價類劃分法;邊界值分析法;因果圖法;等等。另一種分類方法是從對程序內(nèi)部結(jié)構(gòu)的可見性來分,分為黑盒測試和2:白盒測試方法。白盒測試又稱結(jié)構(gòu)測試或邏輯驅(qū)動測試。用該方法進(jìn)行測試時,測試者必須了解被測程序的內(nèi)部結(jié)構(gòu),根據(jù)被測程序的內(nèi)部構(gòu)造設(shè)計測試用例。在白盒測試的過程中,需要測試用例的設(shè)計對被測程序的結(jié)構(gòu)做到一定程度的覆蓋。常見的測試用例設(shè)計方法有:基本路徑法;條件測試法;循環(huán)測試法;等等。將軟件測試劃分為靜態(tài)測試和動態(tài)測試,與劃分為黑盒測試和白盒測試,是沒有矛盾的,兩種方法互相滲透。一般情況下,靜態(tài)測試只利用白盒測試法,動態(tài)測試則使用了黑盒測試與白盒測試;從另一個角度說,黑盒測試一般都是用于動態(tài)測試,而白盒測試一般可以用于靜態(tài)測試和動態(tài)測試。2:白盒測試方法。15.2針對軟件安全問題的測試15.2針對軟件安全問題的測試15.2.1軟件安全測試的必要性安全測試,在充分考慮軟件安全性問題的前提下進(jìn)行的測試,普通的軟件測試的主要目的是:確保軟件不會去完成沒有預(yù)先設(shè)計的功能,確保軟件能夠完成預(yù)先設(shè)計的功能。但是,安全測試更有針對性同時可能采用一些和普通測試不一樣的測試手段,如攻擊和反攻擊技術(shù)。因此,實際上,安全測試實際上就是一輪多角度、全方位的攻擊和反攻擊,其目的就是要搶在攻擊者之前盡可能多地找到軟件中的漏洞.以減少軟件遭到攻擊的可能性。15.2.1軟件安全測試的必要性安全測試,在充分考慮軟件安安全測試基于軟件需求說明書中關(guān)于安全性的功能需求說明,測試的內(nèi)容主要是:軟件的安全功能實現(xiàn)是否與安全需求一致。通常情況下,軟件的安全需求包括:數(shù)據(jù)保密和完整可用;通信過程中的身份認(rèn)證、授權(quán)、訪問控制;通信方的不可抵賴;隱私保護、安全管理;軟件運行過程中的安全漏洞;等等。
安全測試基于軟件需求說明書中關(guān)于安全性的功能需求說明,測試的以一個Web網(wǎng)站為例。需要考慮的問題參見表15-1
。以一個Web網(wǎng)站為例。需要考慮的問題參見表15-1。因此,軟件安全測試和一般的測試具有很大的區(qū)別。一般測試主要是確定軟件的功能能否達(dá)到,如果沒有達(dá)到,就進(jìn)行修改,其任務(wù)具有一定的確定性。但是,安全測試主要是檢查軟件所達(dá)到的功能是否安全可靠,需要證明的是軟件不會出現(xiàn)安全方面的問題,如:數(shù)據(jù)篡改;非授權(quán)訪問;遭受DoS攻擊;等等。因此,軟件安全測試和一般的測試具有很大的區(qū)別。一般測試主要是15.2.2軟件安全性測試的過程軟件的安全測試,一般根據(jù)設(shè)計階段的威脅模型來實施。在第一章我們講到,安全問題,應(yīng)該從設(shè)計階段就開始考慮,設(shè)計要盡可能完善。并提出了采用威脅建模的方法來在軟件設(shè)計階段加入安全因素的考量。威脅建模過程一般如下:1:在項目組中成立一個小組,該小組中的人員是項目組中對安全問題比較了解的人;2:站在安全角度,分解系統(tǒng)的安全需求需求;3:確定系統(tǒng)可能面臨的威脅,將威脅進(jìn)行分類,可以畫出威脅樹;4:選擇應(yīng)付威脅或者緩和威脅的方法;5:確定最終解決這些威脅的技術(shù)15.2.2軟件安全性測試的過程軟件的安全測試,一般根據(jù)設(shè)既然在設(shè)計階段,就將系統(tǒng)可能出現(xiàn)的一些安全問題寫在文檔里面了,因此,安全性測試也應(yīng)該是基于這些內(nèi)容。因此,軟件安全測試的過程可以分為以下幾個步驟:1:基于前面設(shè)計階段制定的威脅模型,設(shè)計測試計劃。該過程一般基于威脅樹,以第一章畫出的針對用戶口令安全問題威脅樹為例,如圖15-2所示:
既然在設(shè)計階段,就將系統(tǒng)可能出現(xiàn)的一些安全問題寫在文檔里面了測試計劃就可以基于口令安全所可能遭受的各個攻擊進(jìn)行制定。
軟件安全測試概述模版課件2:將安全測試的最小組件單位進(jìn)行劃分,并確定組件的輸入格式。實際上,和傳統(tǒng)的測試不同,威脅模型中,并不是所有的模塊都會有安全問題,因此,我們只需將需要安全測試的某一部分程序取出來進(jìn)行測試,將安全測試的最小組件單位進(jìn)行劃分。此外,每個組件都提供了接口,也就是輸入,在測試階段,測試用例需要進(jìn)行輸入,這就必須將每個接口的輸入類型、輸入格式等都列出來,便于測試用例的制定。這些輸入如:2:將安全測試的最小組件單位進(jìn)行劃分,并確定組件的輸入格式。Socket數(shù)據(jù);無線數(shù)據(jù);命令行;語音設(shè)備;串口;HTTP提交;等等。Socket數(shù)據(jù);3:根據(jù)各個接口可能遇到的威脅,或者系統(tǒng)的潛在漏洞,對接口進(jìn)行分級。在該步驟中,主要是確定系統(tǒng)將要受到的威脅的嚴(yán)重性,將比較嚴(yán)重的威脅進(jìn)行優(yōu)先的測試,這個嚴(yán)重性的判斷,應(yīng)該來源于威脅模型??梢酝ㄟ^很多方法對接口受到的威脅性進(jìn)行分級,文獻(xiàn)2中推薦了一種積分制方法,對各個接口可能受到的各種威脅進(jìn)行積分,最后累加,優(yōu)先測試那些分?jǐn)?shù)排在前面的接口。3:根據(jù)各個接口可能遇到的威脅,或者系統(tǒng)的潛在漏洞,對接口進(jìn)4:確定輸入數(shù)據(jù),設(shè)計測試用例。每一個接口可以輸入的數(shù)據(jù)都不相同,由于安全測試不同于普通的測試,因此還要更加精心地設(shè)計測試用例。有時候還要精心設(shè)計輸入的數(shù)據(jù)結(jié)構(gòu),如隨機數(shù)、集合等的設(shè)計,都要必須是為安全測試服務(wù)的。在測試用例的設(shè)計過程中,必須要了解,安全測試實際上是對程序進(jìn)行的安全攻擊,因此,不但數(shù)據(jù)本身需要精心設(shè)計,測試手段也要精心設(shè)計。如在對緩沖區(qū)溢出的測試中,必須精心設(shè)計各種輸入,從不同的方面來對程序進(jìn)行攻擊。4:確定輸入數(shù)據(jù),設(shè)計測試用例。表15-2為Web網(wǎng)站中可以設(shè)計的測試用例(這里省去具體的輸入,僅列出測試的手段)。表15-2為Web網(wǎng)站中可以設(shè)計的測試用例(這里省去具體的5:攻擊應(yīng)用程序,查看其效果。用設(shè)計的測試用例來攻擊應(yīng)用程序,使得系統(tǒng)處于一種受到威脅的狀態(tài),來得到輸出。6:總結(jié)測試結(jié)果,提出解決方案。本過程中,將預(yù)期輸出和實際輸出進(jìn)行比較,得出結(jié)論,寫出測試報告,最后提交相應(yīng)的人員,進(jìn)行錯誤解決。5:攻擊應(yīng)用程序,查看其效果。以上是測試的過程,近年來,關(guān)于安全性測試,還研究出了一些成果,借計算機來進(jìn)行自動的測試,這些成果主要包括以下幾種:1:用形式化方法進(jìn)行安全測試。該方法用用狀態(tài)遷移系統(tǒng)描述軟件的行為,將軟件的功能用計算邏輯和邏輯演算來表達(dá),通過邏輯上的推理和搜索,來發(fā)現(xiàn)軟件中的漏洞。2:基于模型的安全功能測試。在該方法中,首先對軟件的結(jié)構(gòu)和功能進(jìn)行建模,生成測試模型,然后利用測試模型導(dǎo)出測試用例。該方法的成功與否,取決于建模的準(zhǔn)確性,對身份認(rèn)證、訪問控制等情況下安全測試比較適用。常用模型有:UML模型;馬爾可夫鏈模型;等等。
以上是測試的過程,近年來,關(guān)于安全性測試,還研究出了一些成果3:基于輸入語法進(jìn)行測試。接口的輸入語法,定義了軟件接受的輸入數(shù)據(jù)的類型、格式等。該類方法中,首先提取被測接口的輸入語法,如命令行、文件、環(huán)境變量、套接字,然后根據(jù)這些語法,生成測試用例。此類測試方法比較適用于被測軟件有較明確的接口語法的情況,范圍較窄。4:采用隨機方法進(jìn)行測試。該方法又稱為模糊測試,將隨機的不合法數(shù)據(jù)輸入到程序中,有時候能夠發(fā)現(xiàn)一些意想不到的錯誤,在安全性測試中越來越受到重視。軟件測試本來是軟件工程中研究比較活躍的一個分支,針對安全測試的研究也收到較多學(xué)者的重視。有關(guān)一些安全測試方面的最新進(jìn)展,讀者可以參考相關(guān)文獻(xiàn)。3:基于輸入語法進(jìn)行測試。比較熱門的方向包括:權(quán)限系統(tǒng)的自動測試;形式化方法對測試用例的表達(dá);分布式環(huán)境下的測試;云計算環(huán)境下的測試;等等。比較熱門的方向包括:15.3安全審查15.3安全審查安全審查是指對軟件產(chǎn)品進(jìn)行安全方面的人工檢查,是軟件質(zhì)量保證的一個重要環(huán)節(jié),主要包括:代碼的安全審查;配置復(fù)查;文檔的安全審查;等等。
本節(jié)針對這幾個問題進(jìn)行講解。
安全審查是指對軟件產(chǎn)品進(jìn)行安全方面的人工檢查,是軟件質(zhì)量保證15.3.1代碼的安全審查代碼的審查,是審查小組人工測試源程序的過程,而代碼的安全審查,則是針對威脅模型中表達(dá)的一些安全問題進(jìn)行的審查。代碼的安全審查,是一種非常有效的程序安全驗證技術(shù),在代碼的安全審查過程中,首先要組建一個代碼的安全審查小組,最好由如下人員組成:組長,應(yīng)該是一個很有能力的程序員;程序的設(shè)計成員;程序的編寫成員;程序的測試成員。15.3.1代碼的安全審查代碼的審查,是審查小組人工測試代碼安全審查的步驟如下:
小組成員先研究設(shè)計說明書,力求理解軟件的設(shè)計,然后重點針對威脅模型進(jìn)行討論;由設(shè)計者介紹威脅模型中的一些細(xì)節(jié);程序的編寫者逐個模塊地解釋是怎樣用程序代碼解決威脅模型中提出的解決方案的;對照安全程序設(shè)計常見錯誤,分析審查程序;發(fā)現(xiàn)錯誤時,記錄錯誤,繼續(xù)審查。
代碼安全審查的步驟如下:15.3.2配置復(fù)查軟件配置,實際上是指軟件需求規(guī)格說明、軟件設(shè)計規(guī)格說明、源代碼等的總稱,配置復(fù)查實際上是軟件驗收測試的重要內(nèi)容。配置復(fù)查的目的,需要保證如下內(nèi)容:軟件配置的所有成分都齊全;軟件配置質(zhì)量符合要求;文檔與程序完全一致;具有完成軟件維護所必須準(zhǔn)備的細(xì)節(jié);使用手冊的完整性和正確性;等等。軟件配置復(fù)查的過程中,必須仔細(xì)記錄發(fā)現(xiàn)軟件安全測試過程中的安全遺漏或錯誤,并且適當(dāng)?shù)匮a充和改正。15.3.2配置復(fù)查軟件配置,實際上是指軟件需求規(guī)格說明、15.3.3文檔的安全審查文檔在軟件工程中非常重要。對于用戶來說,軟件事實上就是文檔,因此,文檔是影響軟件質(zhì)量的決定因素,有時候可以說,文檔比程序代碼更重要。在文檔中,關(guān)于安全問題的描述不能忽視,必須進(jìn)行審查。軟件系統(tǒng)的文檔可以兩類:1:用戶文檔。用戶文檔主要描述系統(tǒng)功能和使用方法,而并不關(guān)心這些功能是怎樣實現(xiàn)的。用戶文檔是用戶了解系統(tǒng)的第一步,它應(yīng)該能使用戶獲得對系統(tǒng)的準(zhǔn)確的初步印象。用戶文檔至少應(yīng)該包括下述5方面的內(nèi)容:15.3.3文檔的安全審查文檔在軟件工程中非常重要。對于功能描述,說明系統(tǒng)的功能;安裝文檔,說明怎樣安裝這個系統(tǒng),怎樣對系統(tǒng)進(jìn)行配置,使其適應(yīng)特定的運行環(huán)境;使用手冊,說明如何使用這個系統(tǒng),這是一個比較重要的文檔,用戶應(yīng)該可以通過這個文檔學(xué)會系統(tǒng)的使用,有時候,需要通過豐富例子,圖文并茂地表達(dá)這些問題;參考手冊,詳盡描述軟件中提供給用戶使用的所有系統(tǒng)設(shè)施及其使用方法,另外,參考手冊中還應(yīng)該解釋系統(tǒng)可能產(chǎn)生的各種輸出信息,如出錯信息的含義;如果系統(tǒng)中有操作員的話,還需要提供操作員指南,指示操作員應(yīng)該如何處理使用過程中出現(xiàn)的一些情況。用戶文檔可以分別設(shè)立獨立的文檔,也可以設(shè)置為一個大文檔的各個分冊,具體做法,由系統(tǒng)的復(fù)雜性決定。功能描述,說明系統(tǒng)的功能;2:系統(tǒng)文檔。系統(tǒng)文檔指從問題可行性分析、問題定義、需求分析、系統(tǒng)總體設(shè)計、詳細(xì)設(shè)計到測試和測試報告這樣一系列工作有關(guān)的文檔。系統(tǒng)文檔描述了系統(tǒng)從設(shè)計設(shè)計到實現(xiàn),最后到測試的過程。該部分的文檔包括:可行性研究報告;需求分析說明書;總體設(shè)計說明書;詳細(xì)設(shè)計說明書;測試計劃;測試報告;等等。2:系統(tǒng)文檔。文檔的安全審查,是針對軟件項目中的安全問題進(jìn)行的審查,此過程中,主要進(jìn)行的工作是,根據(jù)威脅模型,在各個文檔中審查是否進(jìn)行了良好的表達(dá)。如:用戶文檔中是否含有和解決安全問題相關(guān)的措施,來提示用戶的操作盡可能保證安全性;系統(tǒng)文檔中是否將所有的安全問題進(jìn)行了解決,并用明晰的表達(dá)方式描述出來;等等。文檔的安全審查,是針對軟件項目中的安全問題進(jìn)行的審查,此過程小結(jié)本章講解了安全編程測試中的幾個關(guān)鍵問題,首先講解了軟件測試的概念、目的、意義和方法,然后闡述了針對安全問題的軟件測試,并對這些測試方法進(jìn)行了一些分類。小結(jié)本章講解了安全編程測試中的幾個關(guān)鍵問題,首先講解了軟件測練習(xí)1:有一個銀行系統(tǒng),需要進(jìn)行常見的用戶轉(zhuǎn)賬、查詢操作。流程如下:
(1)列出銀行系統(tǒng)中應(yīng)該進(jìn)行的和安全有關(guān)的測試。(2)畫出威脅樹。
2:軟件安全測試是針對安全問題的測試。(1)軟件安全測試和傳統(tǒng)普通測試的區(qū)別有哪些?(2)軟件安全測試的方法有哪些?
練習(xí)1:有一個銀行系統(tǒng),需要進(jìn)行常見的用戶轉(zhuǎn)賬、查詢操作。流3:在某個論壇中,可能在各種情況下出現(xiàn)服務(wù)器負(fù)載過大不得不停機的問題。(1)造成這個問題的原因可能有哪些?(2)畫出威脅樹。(3)怎樣解決或者緩解這個問題?(4)怎樣測試?4:Socket是一種使用較多的網(wǎng)絡(luò)通信手段。(1)查看相關(guān)資料,了解:如果要進(jìn)行即時通訊,怎樣用Socket實現(xiàn)?(2)Socket通信過程中具有什么安全問題?Socket安全測試一般怎樣進(jìn)行?3:在某個論壇中,可能在各種情況下出現(xiàn)服務(wù)器負(fù)載過大不得不停1.對于整個市場而言,生產(chǎn)要素的供給與一般產(chǎn)品的供給曲線一樣,也是一條向右上方傾斜的曲線2.但是由于不同生產(chǎn)要素各具特點,所以并非所有要素的供給曲線都是正斜率曲線。3.如果有人以推銷員、修理工等身份要求開門,可以說明家中不需要這些服務(wù),請其離開;如果有人以家長同事、朋友或者遠(yuǎn)方親戚的身份要求開門,也不能輕信,可以請其待家長回家后再來。4.要經(jīng)常收聽收看天氣預(yù)報,密切注視天氣變化,了解掌握災(zāi)情預(yù)測預(yù)報,做好防洪自護。要認(rèn)真學(xué)習(xí)有關(guān)汛期防災(zāi)抗災(zāi)的知識,提高自我保護能力5.避免將一般細(xì)節(jié)性的討論過程發(fā)送給領(lǐng)導(dǎo)。領(lǐng)導(dǎo)更關(guān)注結(jié)果,而不是反反復(fù)復(fù)地溝通過程,可以將階段性成果發(fā)送給領(lǐng)導(dǎo)。如果是重要事件,領(lǐng)導(dǎo)需要直接參與或了解過程,則必須發(fā)送或抄送。6.態(tài)度是最根本的問題,態(tài)度在某些時候起著決定性的作用,態(tài)度是行動的前提,態(tài)度受價值觀的指導(dǎo),態(tài)度是為人處世的基本原則。凡事態(tài)度積極,就已經(jīng)成功了一半!7.客戶才是企業(yè)真正的老板,如果企業(yè)喪失了客戶,就失去了生存的基礎(chǔ),所以給客戶提供卓越而周到的服務(wù)是企業(yè)發(fā)展的重要策略,企業(yè)必須重視客戶服務(wù)。8.增加服務(wù)意識,不僅對企業(yè)有利,更能提高員工自身的服務(wù)技能,對個人的成長和發(fā)展都有著緊密的聯(lián)系,可以豐富職業(yè)生涯,使自己成為專業(yè)型服務(wù)人才。謝謝觀看!1.對于整個市場而言,生產(chǎn)要素的供給與一般產(chǎn)品的供給曲線一樣第十五章軟件安全測試第十五章軟件安全測試質(zhì)量保證活動是軟件開發(fā)過程中重要的環(huán)節(jié),而軟件測試是軟件質(zhì)量保證的關(guān)鍵手段。實際上,軟件測試的工作量,在軟件開發(fā)過程中占據(jù)較大的一部分,測試做得好,會大大降低維護的成本。測試的主要目標(biāo)是找到軟件中存在的錯誤,并加以排除,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。隨著應(yīng)用的廣泛,軟件的安全性也就越來越成為軟件的關(guān)鍵質(zhì)量指標(biāo),因此,針對安全問題的測試又顯得更為重要。本章主要針對安全測試和評審問題進(jìn)行概述,首先講解了軟件測試的概念、目的、意義和方法,然后闡述了針對安全問題的軟件測試,并對這些測試方法進(jìn)行了一些分類。質(zhì)量保證活動是軟件開發(fā)過程中重要的環(huán)節(jié),而軟件測試是軟件質(zhì)量15.1軟件測試概述15.1軟件測試概述15.1.1軟件測試的概念I(lǐng)EEE對軟件測試給出的定義是:“使用人工或者自動手段來運行或測定某個系統(tǒng),其目的在于檢測該系統(tǒng)是否滿足規(guī)定的需求,或者弄清楚預(yù)期的結(jié)果與實際結(jié)果的差別?!?,因此,軟件測試,實際上是為了發(fā)現(xiàn)軟件中的錯誤,并在交付用戶使用前解決這些錯誤,這幾乎成為一個公認(rèn)的概念。這里的“錯誤”,實際上是一個廣義的概念,初學(xué)者往往會將其理解為“編碼錯誤”,實際上,能夠引起軟件錯誤的因素很多,絕不僅僅是編碼方面的原因,包括很廣泛的內(nèi)容:15.1.1軟件測試的概念I(lǐng)EEE對軟件測試給出的定義是:軟件的需求分析者曲解了用戶的需求,測試時發(fā)現(xiàn)實現(xiàn)的流程和用戶的敘述不一樣;軟件的設(shè)計者在設(shè)計時沒有考慮某些現(xiàn)場因素,導(dǎo)致軟件在真實環(huán)境下測試時無法正常運行;軟件編碼者粗心大意,將某些邏輯流程寫錯,使得程序得不到料想的結(jié)果;等等。軟件的需求分析者曲解了用戶的需求,測試時發(fā)現(xiàn)實現(xiàn)的流程和用戶15.1.2軟件測試的目的和意義由此可見,軟件測試的根本目標(biāo)是盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。GrenfordJ.Myers曾對軟件測試的目的提出過以下觀點:測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案;成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。15.1.2軟件測試的目的和意義由此可見,軟件測試的根本目不過,我們并不能說,軟件測試效果的評價指標(biāo)就是查出錯誤的個數(shù),認(rèn)為查不出錯誤的測試就是沒有價值的測試,這是片面的,因為:沒有發(fā)現(xiàn)錯誤,或者發(fā)現(xiàn)錯誤較少的測試,也是有價值的,可能說明軟件質(zhì)量較高,因此,測試同時也是評定軟件質(zhì)量的一種標(biāo)準(zhǔn);發(fā)現(xiàn)很多錯誤的測試,不一定是成功的,如果軟件本身質(zhì)量較低,那么不能通過發(fā)現(xiàn)錯誤的個數(shù)越多,來得出軟件剩下的錯誤越少的結(jié)論;當(dāng)前發(fā)現(xiàn)的錯誤越多,可能剩下的錯誤也很多。不過,我們并不能說,軟件測試效果的評價指標(biāo)就是查出錯誤的個數(shù)從另一角度講,通過軟件測試找到錯誤,我們除了能夠解決錯誤外,還可以通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,幫助軟件的生產(chǎn)者發(fā)現(xiàn)當(dāng)前軟件開發(fā)過程中的缺陷,以便及時改進(jìn);另外,通過對錯誤進(jìn)行分析,也可以幫助測試人員設(shè)計出更加有針對性的測試方法,提高測試工作的效率和效果。軟件測試的意義主要體現(xiàn)在:減少軟件中錯誤:通過軟件測試可以發(fā)現(xiàn)軟件中存在的錯誤,通過完全地修改這些錯誤,可以減少軟件中錯誤,提高軟件的可靠性;評估軟件的綜合性能:通過軟件測試,對發(fā)現(xiàn)的錯誤進(jìn)行分析和統(tǒng)計,可以評估軟件綜合性能。當(dāng)然,即使軟件測試沒有發(fā)現(xiàn)任何錯誤,也可以作為評估軟件綜合性能的手段;等等。從另一角度講,通過軟件測試找到錯誤,我們除了能夠解決錯誤外,15.1.3軟件測試方法從實際項目的測試工作劃分,軟件測試工作可以劃分為以下幾個過程:單元測試:對用軟件的每一個程序單元進(jìn)行測試,檢查各個程序模塊的正確性;并配合適當(dāng)?shù)拇a審查;集成測試:把已測試過的模塊組裝起來,以便發(fā)現(xiàn)與接口有關(guān)的問題,如:數(shù)據(jù)模塊間傳遞、模塊組合性能、模塊調(diào)用性能等;確認(rèn)測試:檢查軟件是否滿足了需求規(guī)格說明書中的各種需求,以及軟件配置是否完全、正確;該測試又叫做驗收測試,目的是驗證軟件的有效性;系統(tǒng)測試:把已經(jīng)通過驗收的軟件,放入實際運行環(huán)境中運行;用戶記錄在測試過程中遇到的一切問題,定期報告給開發(fā)者。15.1.3軟件測試方法從實際項目的測試工作劃分,軟件測試這幾個測試過程,從軟件開發(fā)生命周期的一開始就應(yīng)該執(zhí)行,因此,測試在軟件工程中的地位如圖所示:這幾個測試過程,從軟件開發(fā)生命周期的一開始就應(yīng)該執(zhí)行,因此,軟件測試的方法,可以有很多種分類,第一種分類是靜態(tài)測試方法和動態(tài)測試方法。1:靜態(tài)測試方法。該方法中,不實際運行被測試的軟件,對軟件進(jìn)行分析、檢查和審閱,來尋找邏輯錯誤。主要工作包括:對需求規(guī)格說明書、軟件設(shè)計說明書、源程序做檢查和審閱;檢查以上工作是否符合標(biāo)準(zhǔn)和規(guī)范;通過結(jié)構(gòu)分析、流圖分析等方法,指出軟件缺陷;對各種文檔進(jìn)行測試;等等。軟件測試的方法,可以有很多種分類,第一種分類是靜態(tài)測試方法和靜態(tài)測試是軟件開發(fā)中十分有效的質(zhì)量控制方法之一。該方法特別是在軟件開發(fā)生命周期的早期和中期階段非常有效。此時,由于程序還沒有編出來,可以直接運行的代碼尚未產(chǎn)生,此時又必須對設(shè)計的一些思路進(jìn)行檢查或者審核,因為初期的工作的質(zhì)量可能直接關(guān)系到軟件開發(fā)的成本,因此,在這些階段,可以大量采用靜態(tài)測試方法。靜態(tài)測試主要靠人工來完成,不過,近些年來,也開發(fā)了不少自動化的工具,進(jìn)行計算機輔助測試,但是,短期內(nèi)想要實現(xiàn)其測試的自動化,難度較大。靜態(tài)測試的質(zhì)量更多地依賴于測試的組織和測試者的水平,定性地分析軟件質(zhì)量的情況居多,具有一定的局限性。靜態(tài)測試是軟件開發(fā)中十分有效的質(zhì)量控制方法之一。該方法特別是2:動態(tài)測試法。動態(tài)測試和靜態(tài)測試不同,在測試的過程中,實際運行軟件,檢測軟件的動態(tài)行為和運行結(jié)果的正確性。動態(tài)測試包括兩個基本要素:一是被測軟件;二是在軟件運行過程中的輸入數(shù)據(jù),每一次測試需要的測試數(shù)據(jù)叫做測試用例。因此,動態(tài)測試一般在軟件編碼階段完成之后進(jìn)行。動態(tài)測試由于其比較強的錯誤檢測能力,受到了廣泛的采用。動態(tài)測試的過程是:設(shè)計一個測試用例,輸入到程序中;看預(yù)期結(jié)果和實際運行結(jié)果是否一樣;得出最后結(jié)論。動態(tài)測試方法中,其最大的難度是測試用例的設(shè)計,因為如果要進(jìn)行窮舉性測試,完全是不可能的。2:動態(tài)測試法。另一種分類方法是從對程序內(nèi)部結(jié)構(gòu)的可見性來分,分為黑盒測試和白盒測試。1:黑盒測試方法。黑盒測試又稱為功能測試。用該方法進(jìn)行測試時,被測程序被當(dāng)做一個黑盒,測試者無需知道程序內(nèi)部結(jié)構(gòu),只需要知道程序的輸入、以及輸出是否和預(yù)期輸出相符。用例設(shè)計方法有:等價類劃分法;邊界值分析法;因果圖法;等等。另一種分類方法是從對程序內(nèi)部結(jié)構(gòu)的可見性來分,分為黑盒測試和2:白盒測試方法。白盒測試又稱結(jié)構(gòu)測試或邏輯驅(qū)動測試。用該方法進(jìn)行測試時,測試者必須了解被測程序的內(nèi)部結(jié)構(gòu),根據(jù)被測程序的內(nèi)部構(gòu)造設(shè)計測試用例。在白盒測試的過程中,需要測試用例的設(shè)計對被測程序的結(jié)構(gòu)做到一定程度的覆蓋。常見的測試用例設(shè)計方法有:基本路徑法;條件測試法;循環(huán)測試法;等等。將軟件測試劃分為靜態(tài)測試和動態(tài)測試,與劃分為黑盒測試和白盒測試,是沒有矛盾的,兩種方法互相滲透。一般情況下,靜態(tài)測試只利用白盒測試法,動態(tài)測試則使用了黑盒測試與白盒測試;從另一個角度說,黑盒測試一般都是用于動態(tài)測試,而白盒測試一般可以用于靜態(tài)測試和動態(tài)測試。2:白盒測試方法。15.2針對軟件安全問題的測試15.2針對軟件安全問題的測試15.2.1軟件安全測試的必要性安全測試,在充分考慮軟件安全性問題的前提下進(jìn)行的測試,普通的軟件測試的主要目的是:確保軟件不會去完成沒有預(yù)先設(shè)計的功能,確保軟件能夠完成預(yù)先設(shè)計的功能。但是,安全測試更有針對性同時可能采用一些和普通測試不一樣的測試手段,如攻擊和反攻擊技術(shù)。因此,實際上,安全測試實際上就是一輪多角度、全方位的攻擊和反攻擊,其目的就是要搶在攻擊者之前盡可能多地找到軟件中的漏洞.以減少軟件遭到攻擊的可能性。15.2.1軟件安全測試的必要性安全測試,在充分考慮軟件安安全測試基于軟件需求說明書中關(guān)于安全性的功能需求說明,測試的內(nèi)容主要是:軟件的安全功能實現(xiàn)是否與安全需求一致。通常情況下,軟件的安全需求包括:數(shù)據(jù)保密和完整可用;通信過程中的身份認(rèn)證、授權(quán)、訪問控制;通信方的不可抵賴;隱私保護、安全管理;軟件運行過程中的安全漏洞;等等。
安全測試基于軟件需求說明書中關(guān)于安全性的功能需求說明,測試的以一個Web網(wǎng)站為例。需要考慮的問題參見表15-1
。以一個Web網(wǎng)站為例。需要考慮的問題參見表15-1。因此,軟件安全測試和一般的測試具有很大的區(qū)別。一般測試主要是確定軟件的功能能否達(dá)到,如果沒有達(dá)到,就進(jìn)行修改,其任務(wù)具有一定的確定性。但是,安全測試主要是檢查軟件所達(dá)到的功能是否安全可靠,需要證明的是軟件不會出現(xiàn)安全方面的問題,如:數(shù)據(jù)篡改;非授權(quán)訪問;遭受DoS攻擊;等等。因此,軟件安全測試和一般的測試具有很大的區(qū)別。一般測試主要是15.2.2軟件安全性測試的過程軟件的安全測試,一般根據(jù)設(shè)計階段的威脅模型來實施。在第一章我們講到,安全問題,應(yīng)該從設(shè)計階段就開始考慮,設(shè)計要盡可能完善。并提出了采用威脅建模的方法來在軟件設(shè)計階段加入安全因素的考量。威脅建模過程一般如下:1:在項目組中成立一個小組,該小組中的人員是項目組中對安全問題比較了解的人;2:站在安全角度,分解系統(tǒng)的安全需求需求;3:確定系統(tǒng)可能面臨的威脅,將威脅進(jìn)行分類,可以畫出威脅樹;4:選擇應(yīng)付威脅或者緩和威脅的方法;5:確定最終解決這些威脅的技術(shù)15.2.2軟件安全性測試的過程軟件的安全測試,一般根據(jù)設(shè)既然在設(shè)計階段,就將系統(tǒng)可能出現(xiàn)的一些安全問題寫在文檔里面了,因此,安全性測試也應(yīng)該是基于這些內(nèi)容。因此,軟件安全測試的過程可以分為以下幾個步驟:1:基于前面設(shè)計階段制定的威脅模型,設(shè)計測試計劃。該過程一般基于威脅樹,以第一章畫出的針對用戶口令安全問題威脅樹為例,如圖15-2所示:
既然在設(shè)計階段,就將系統(tǒng)可能出現(xiàn)的一些安全問題寫在文檔里面了測試計劃就可以基于口令安全所可能遭受的各個攻擊進(jìn)行制定。
軟件安全測試概述模版課件2:將安全測試的最小組件單位進(jìn)行劃分,并確定組件的輸入格式。實際上,和傳統(tǒng)的測試不同,威脅模型中,并不是所有的模塊都會有安全問題,因此,我們只需將需要安全測試的某一部分程序取出來進(jìn)行測試,將安全測試的最小組件單位進(jìn)行劃分。此外,每個組件都提供了接口,也就是輸入,在測試階段,測試用例需要進(jìn)行輸入,這就必須將每個接口的輸入類型、輸入格式等都列出來,便于測試用例的制定。這些輸入如:2:將安全測試的最小組件單位進(jìn)行劃分,并確定組件的輸入格式。Socket數(shù)據(jù);無線數(shù)據(jù);命令行;語音設(shè)備;串口;HTTP提交;等等。Socket數(shù)據(jù);3:根據(jù)各個接口可能遇到的威脅,或者系統(tǒng)的潛在漏洞,對接口進(jìn)行分級。在該步驟中,主要是確定系統(tǒng)將要受到的威脅的嚴(yán)重性,將比較嚴(yán)重的威脅進(jìn)行優(yōu)先的測試,這個嚴(yán)重性的判斷,應(yīng)該來源于威脅模型??梢酝ㄟ^很多方法對接口受到的威脅性進(jìn)行分級,文獻(xiàn)2中推薦了一種積分制方法,對各個接口可能受到的各種威脅進(jìn)行積分,最后累加,優(yōu)先測試那些分?jǐn)?shù)排在前面的接口。3:根據(jù)各個接口可能遇到的威脅,或者系統(tǒng)的潛在漏洞,對接口進(jìn)4:確定輸入數(shù)據(jù),設(shè)計測試用例。每一個接口可以輸入的數(shù)據(jù)都不相同,由于安全測試不同于普通的測試,因此還要更加精心地設(shè)計測試用例。有時候還要精心設(shè)計輸入的數(shù)據(jù)結(jié)構(gòu),如隨機數(shù)、集合等的設(shè)計,都要必須是為安全測試服務(wù)的。在測試用例的設(shè)計過程中,必須要了解,安全測試實際上是對程序進(jìn)行的安全攻擊,因此,不但數(shù)據(jù)本身需要精心設(shè)計,測試手段也要精心設(shè)計。如在對緩沖區(qū)溢出的測試中,必須精心設(shè)計各種輸入,從不同的方面來對程序進(jìn)行攻擊。4:確定輸入數(shù)據(jù),設(shè)計測試用例。表15-2為Web網(wǎng)站中可以設(shè)計的測試用例(這里省去具體的輸入,僅列出測試的手段)。表15-2為Web網(wǎng)站中可以設(shè)計的測試用例(這里省去具體的5:攻擊應(yīng)用程序,查看其效果。用設(shè)計的測試用例來攻擊應(yīng)用程序,使得系統(tǒng)處于一種受到威脅的狀態(tài),來得到輸出。6:總結(jié)測試結(jié)果,提出解決方案。本過程中,將預(yù)期輸出和實際輸出進(jìn)行比較,得出結(jié)論,寫出測試報告,最后提交相應(yīng)的人員,進(jìn)行錯誤解決。5:攻擊應(yīng)用程序,查看其效果。以上是測試的過程,近年來,關(guān)于安全性測試,還研究出了一些成果,借計算機來進(jìn)行自動的測試,這些成果主要包括以下幾種:1:用形式化方法進(jìn)行安全測試。該方法用用狀態(tài)遷移系統(tǒng)描述軟件的行為,將軟件的功能用計算邏輯和邏輯演算來表達(dá),通過邏輯上的推理和搜索,來發(fā)現(xiàn)軟件中的漏洞。2:基于模型的安全功能測試。在該方法中,首先對軟件的結(jié)構(gòu)和功能進(jìn)行建模,生成測試模型,然后利用測試模型導(dǎo)出測試用例。該方法的成功與否,取決于建模的準(zhǔn)確性,對身份認(rèn)證、訪問控制等情況下安全測試比較適用。常用模型有:UML模型;馬爾可夫鏈模型;等等。
以上是測試的過程,近年來,關(guān)于安全性測試,還研究出了一些成果3:基于輸入語法進(jìn)行測試。接口的輸入語法,定義了軟件接受的輸入數(shù)據(jù)的類型、格式等。該類方法中,首先提取被測接口的輸入語法,如命令行、文件、環(huán)境變量、套接字,然后根據(jù)這些語法,生成測試用例。此類測試方法比較適用于被測軟件有較明確的接口語法的情況,范圍較窄。4:采用隨機方法進(jìn)行測試。該方法又稱為模糊測試,將隨機的不合法數(shù)據(jù)輸入到程序中,有時候能夠發(fā)現(xiàn)一些意想不到的錯誤,在安全性測試中越來越受到重視。軟件測試本來是軟件工程中研究比較活躍的一個分支,針對安全測試的研究也收到較多學(xué)者的重視。有關(guān)一些安全測試方面的最新進(jìn)展,讀者可以參考相關(guān)文獻(xiàn)。3:基于輸入語法進(jìn)行測試。比較熱門的方向包括:權(quán)限系統(tǒng)的自動測試;形式化方法對測試用例的表達(dá);分布式環(huán)境下的測試;云計算環(huán)境下的測試;等等。比較熱門的方向包括:15.3安全審查15.3安全審查安全審查是指對軟件產(chǎn)品進(jìn)行安全方面的人工檢查,是軟件質(zhì)量保證的一個重要環(huán)節(jié),主要包括:代碼的安全審查;配置復(fù)查;文檔的安全審查;等等。
本節(jié)針對這幾個問題進(jìn)行講解。
安全審查是指對軟件產(chǎn)品進(jìn)行安全方面的人工檢查,是軟件質(zhì)量保證15.3.1代碼的安全審查代碼的審查,是審查小組人工測試源程序的過程,而代碼的安全審查,則是針對威脅模型中表達(dá)的一些安全問題進(jìn)行的審查。代碼的安全審查,是一種非常有效的程序安全驗證技術(shù),在代碼的安全審查過程中,首先要組建一個代碼的安全審查小組,最好由如下人員組成:組長,應(yīng)該是一個很有能力的程序員;程序的設(shè)計成員;程序的編寫成員;程序的測試成員。15.3.1代碼的安全審查代碼的審查,是審查小組人工測試代碼安全審查的步驟如下:
小組成員先研究設(shè)計說明書,力求理解軟件的設(shè)計,然后重點針對威脅模型進(jìn)行討論;由設(shè)計者介紹威脅模型中的一些細(xì)節(jié);程序的編寫者逐個模塊地解釋是怎樣用程序代碼解決威脅模型中提出的解決方案的;對照安全程序設(shè)計常見錯誤,分析審查程序;發(fā)現(xiàn)錯誤時,記錄錯誤,繼續(xù)審查。
代碼安全審查的步驟如下:15.3.2配置復(fù)查軟件配置,實際上是指軟件需求規(guī)格說明、軟件設(shè)計規(guī)格說明、源代碼等的總稱,配置復(fù)查實際上是軟件驗收測試的重要內(nèi)容。配置復(fù)查的目的,需要保證如下內(nèi)容:軟件配置的所有成分都齊全;軟件配置質(zhì)量符合要求;文檔與程序完全一致;具有完成軟件維護所必須準(zhǔn)備的細(xì)節(jié);使用手冊的完整性和正確性;等等。軟件配置復(fù)查的過程中,必須仔細(xì)記錄發(fā)現(xiàn)軟件安全測試過程中的安全遺漏或錯誤,并且適當(dāng)?shù)匮a充和改正。15.3.2配置復(fù)查軟件配置,實際上是指軟件需求規(guī)格說明、15.3.3文檔的安全審查文檔在軟件工程中非常重要。對于用戶來說,軟件事實上就是文檔,因此,文檔是影響軟件質(zhì)量的決定因素,有時候可以說,文檔比程序代碼更重要。在文檔中,關(guān)于安全問題的描述不能忽視,必須進(jìn)行審查。軟件系統(tǒng)的文檔可以兩類:1:用戶文檔。用戶文檔主要描述系統(tǒng)功能和使用方法,而并不關(guān)心這些功能是怎樣實現(xiàn)的。用戶文檔是用戶了解系統(tǒng)的第一步,它應(yīng)該能使用戶獲得對系統(tǒng)的準(zhǔn)確的初步印象。用戶文檔至少應(yīng)該包括下述5方面的內(nèi)容:15.3.3文檔的安全審查文檔在軟件工程中非常重要。對于功能描述,說明系統(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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人搬家服務(wù)2024年度合同3篇
- 二零二五版KTV消防安全檢查與整改服務(wù)合同2篇
- 二零二五年方管產(chǎn)品綠色包裝設(shè)計與實施合同3篇
- 2024年高端定制家具制造合同
- 2024無人機航拍與監(jiān)測服務(wù)合同
- 二零二五版歷史文化名城保護項目技術(shù)咨詢合同3篇
- 二零二五版廢鐵回收處理與環(huán)保服務(wù)合同3篇
- 2024年薪資隱私協(xié)議3篇
- 二零二五年白酒質(zhì)量檢測與認(rèn)證服務(wù)合同2篇
- 武漢華夏理工學(xué)院《世界音樂文化》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023年中考語文備考之名著閱讀《經(jīng)典常談》思維導(dǎo)圖合集
- 2023年湘教版數(shù)學(xué)七年級下冊《整式的乘法》單元質(zhì)量檢測(含答案)
- 氣柜安裝工程施工方案
- GB/T 28750-2012節(jié)能量測量和驗證技術(shù)通則
- GB/T 18791-2002電子和電氣陶瓷性能試驗方法
- 分子生物學(xué)本基因組及基因組學(xué)概論
- 《人工智能》全冊配套課件
- 統(tǒng)編部編版四年級道德與法治下冊優(yōu)秀課件【全冊】
- 高職大?!扼w育與健康》課程標(biāo)準(zhǔn)
- 12月1日世界艾滋病日預(yù)防艾滋病講座PPT珍愛生命預(yù)防艾滋病PPT課件(帶內(nèi)容)
- 測量儀器自檢記錄表(全站儀)
評論
0/150
提交評論