錢力
摘 要:本文旨在闡述信息系統(tǒng)安全測試技術(shù),首先對整個安全測試框架進行闡述,介紹了安全測試技術(shù)的重要性,然后著重學(xué)習(xí)了安全測試技術(shù),主要包括數(shù)據(jù)流分析、控制流分析等在內(nèi)的代碼靜態(tài)分析技術(shù)以及模仿黑客對信息系統(tǒng)進行攻擊的滲透測試技術(shù),從而實現(xiàn)信息系統(tǒng)的安全測試。
關(guān)鍵詞:安全測試技術(shù);靜態(tài)分析;滲透測試
1 引言
隨著社會的不斷發(fā)展以及科學(xué)技術(shù)的不斷進步,信息系統(tǒng)已經(jīng)成為社會不可分割的一部分,在社會的各個領(lǐng)域中廣泛應(yīng)用。隨著人們業(yè)務(wù)需求的不斷拓展,信息系統(tǒng)的功能也不斷龐大,設(shè)計的模塊也越來越多,這就使得人們對信息系統(tǒng)的正常完整的運行有著更高的要求。在信息系統(tǒng)開發(fā)伊始,人們便希望通過某種方法和技術(shù)將開發(fā)的信息系統(tǒng)能夠正確無誤地投入到生產(chǎn)環(huán)境中,此時軟件測試應(yīng)運而生。軟件測試的的種類有很多,最常見的應(yīng)用最早的是對信息系統(tǒng)的功能測試,隨著時間的推移和技術(shù)的發(fā)展,功能測試的方法、技術(shù)以及策略等都已經(jīng)趨于成熟,而信息系統(tǒng)的結(jié)構(gòu)不斷復(fù)雜、功能不斷繁多,使得其他方面的需求也逐漸被重視起來,例如信息系統(tǒng)在實現(xiàn)軟件功能時是否快速地正確地響應(yīng),是否能夠保證在整個運行過程中保證信息的安全等,所以對于信息系統(tǒng)的安全測試也逐漸被人們重視起來,逐漸成為主流的測試技術(shù)應(yīng)用在軟件開發(fā)的過程中。所以對于信息系統(tǒng)安全測試技術(shù)的研究對于信息系統(tǒng)的開發(fā)來說,就有非常重要的現(xiàn)實意義。
2 安全測試的主要框架
對于信息系統(tǒng)的安全測試,需要有良好的測試框架支撐,只有這樣才能很好地開展安全測試,很好地認(rèn)識安全測試在什么階段做什么事情。如下圖所示,為信息系統(tǒng)安全測試的主要應(yīng)用框架[2] 示意圖。
對信息系統(tǒng)的安全測試需要一個完整的安全測試體系框架來支撐,對待交付的新系統(tǒng)進行安全測試,首先要制定詳細(xì)的安全測試策略,從而指導(dǎo)安全測試的過程以及安全測試實踐。在此基礎(chǔ)上,對信息系統(tǒng)的安全測試需要有測試標(biāo)準(zhǔn),即對測試的內(nèi)容以及缺陷的定位提供最重要的依據(jù)。同時需要對整個信息系統(tǒng)安全知識點和軟件測試方法的深入了解,并且掌握當(dāng)前最流行的安全測試工具以及相關(guān)的安全技術(shù)知識。最后,根據(jù)制定的安全測試策略以及掌握的安全測試知識,就可以根據(jù)信息系統(tǒng)的基本需求中的關(guān)于安全問題的描述開展安全測試。整體來看,安全測試與普通的軟件測試沒有太大的區(qū)別,只是在測試技術(shù)或測試工具上有不同,所以對于一個熟悉軟件測試的人員來說,開展安全測試最重要的就是掌握軟件安全技術(shù)以及軟件安全測試技術(shù)的知識。
3 安全測試技術(shù)及其原理
軟件安全測試技術(shù)大體上包含兩部分,第一就是靜態(tài)測試,第二就是動態(tài)測試。簡單來說,靜態(tài)測試就是不實際運行被測信息系統(tǒng),直接對軟件的代碼、文檔等進行測試,而動態(tài)測試則要運行被測系統(tǒng),然后按照相應(yīng)的方法去對被測信息系統(tǒng)執(zhí)行相應(yīng)的操作,最后將被測信息系統(tǒng)得出的結(jié)果與期望的結(jié)果進行對比,如果與期望結(jié)果相同,則說明被測系統(tǒng)符合信息系統(tǒng)規(guī)格需求描述,如果不符合,則說明被測信息系統(tǒng)存在缺陷。
(1)靜態(tài)分析技術(shù)。信息系統(tǒng)的安全測試的靜態(tài)測試[1],主要是采用靜態(tài)分析技術(shù),對信息系統(tǒng)的代碼進行靜態(tài)分析。常見的靜態(tài)分析方法有對數(shù)據(jù)流的分析方法、控制流分析方法、語義分析方法、結(jié)構(gòu)分析方法、配置分析方法。其中數(shù)據(jù)流分析方法就是跟蹤代碼的數(shù)據(jù)傳遞過程,深入跟蹤并分析數(shù)據(jù)的聲明、定義、賦值、使用、消亡等過程,然后判斷哪些數(shù)據(jù)在數(shù)據(jù)的聲明周期中是否被外部的輸入或用戶操作或其他非法操作感染,并被傳遞到那個函數(shù)等,并分析可能造成的危害,從而識別SQL注入、命令注入等安全漏洞。控制流分析方法則是對代碼的程序操作流程或者代碼的執(zhí)行順序進行分析,判斷整個代碼是否出現(xiàn)惡意跳轉(zhuǎn)或者非法路徑操作,從而識別代碼中是否存在安全漏洞。語義分析方法則是對代碼的各種函數(shù)或者其他API進行分析,判斷程序內(nèi)部是否可能出現(xiàn)安全漏洞,該方法主要識別系統(tǒng)的緩沖區(qū)溢出等主要安全問題。結(jié)構(gòu)分析方法主要對代碼的程序結(jié)構(gòu)、函數(shù)的構(gòu)建方式等進行判斷識別,從而發(fā)現(xiàn)可能潛在的安全漏洞。配置分析方法則是對主要的配置文件、配置規(guī)則等進行分析來發(fā)現(xiàn)潛在的安全漏洞。
(2)滲透測試技術(shù)。對信息系統(tǒng)的安全動態(tài)測試則是滲透測試,該測試技術(shù)屬于黑盒測試的范疇,即在不了解信息系統(tǒng)內(nèi)部結(jié)構(gòu)和運作機制的情況下,按照網(wǎng)絡(luò)黑客攻擊信息系統(tǒng)的方法來對其進行檢測,從而發(fā)現(xiàn)信息系統(tǒng)存在的安全漏洞。滲透測試針對不同的安全漏洞采用的測試方法有所不同,以SQL注入為例,采用滲透測試的方法就有很多。首先,對信息系統(tǒng)進行安全滲透測試,要驗證信息系統(tǒng)所有的輸入點,包括常見的get,post,Cookie以及其他的URL地址的http請求;然后使用常見的SQL對字符串的引用符合、語句分割符號以及注釋符號,配合SQL關(guān)鍵子And或者Or來構(gòu)建SQL注入字符,從而構(gòu)成了能夠注入SQL信息的URL請求。在構(gòu)建注入請求時,要保證整個URL的有效性,包括輸入合法的判斷以及長度是否越界的判斷。 此外,還可以使用Union操作符偽造查詢請求或使用數(shù)據(jù)庫存儲過程進行盲注來對信息系統(tǒng)的SQL注入漏洞進行測試。
信息系統(tǒng)的安全漏洞由很多,測試方法也大同小異,但是通過手工測試的方法來開展安全測試需要浪費大量的人力和物力,此時可以通過工具來實現(xiàn)對信息系統(tǒng)的測試?;萜盏腤ebInspect是商業(yè)的非常有效的滲透測試工具,可以自動地對SQL注入、跨站腳本攻擊等各種安全漏洞進行掃描,并生成專業(yè)的測試包括,從而實現(xiàn)安全測試的過程。
4 總結(jié)
信息系統(tǒng)的安全測試技術(shù)主要包括了對代碼的靜態(tài)分析技術(shù)以及對系統(tǒng)的滲透測試技術(shù),依照兩個測試技術(shù),可以對信息系統(tǒng)進行安全測試,并對潛在的安全漏洞進行報告,最后通過開發(fā)人員修復(fù)安全漏洞,最終完成對信息系統(tǒng)的安全測試過程。
參考文獻(xiàn):
[1]王春喜,歐陽勁松.系統(tǒng)功能安全測試技術(shù)研究[J].自動化儀表,2006(S1).
[2]江常青,鄒琪,林家駿. 信息系統(tǒng)安全測試框架[J].計算機工程,2008(02).
[3]程秀權(quán).信息系統(tǒng)安全規(guī)劃框架與方法[J].現(xiàn)代電信科技,2007(06).