避免沙堆建樓 做好軟件安全測試

發表于:2015-03-06來源:不詳作者:娃娃點擊數: 標簽:安全測試
近來,在我負責的公司某軟件產品的最后測試工作,常常被問到這樣一個問題:在做測試過程中,我們的軟件產品在安全性方面考慮了多少?應該如何測評一個軟件到底有多安全?

近來,在我負責的公司某軟件產品的最后測試工作,常常被問到這樣一個問題:在做測試過程中,我們的軟件產品在安全性方面考慮了多少?應該如何測評一個軟件到底有多安全?

這個軟件因為涉及客戶商業上重要的信息資料,因此用戶關心的核心問題始終圍繞“這個軟件安全嗎”。一個由于設計導致的安全漏洞和一個由于實現導致的安全漏洞,對用戶的最終影響都是巨大的。我的任務就是確保這個軟件在安全性方面能滿足客戶期望。

什么是軟件安全性測試

(1)什么是軟件安全

軟件安全屬于軟件領域里一個重要的子領域。在以前的單機時代,安全問題主要是操作系統容易感染病毒,單機應用程序軟件安全問題并不突出。但是自從互聯網普及后,軟件安全問題愈加顯加突顯,使得軟件安全性測試的重要性上升到一個前所未有的高度。

軟件安全一般分為兩個層次,即應用程序級別的安全性和操作系統級別的安全性。應用程序級別的安全性,包括對數據或業務功能的訪問,在預期的安全性情況下, 操作者只能訪問應用程序的特定功能、有限的數據等。操作系統級別的安全性是確保只有具備系統平臺訪問權限的用戶才能訪問,包括對系統的登錄或遠程訪問。

本文所講的軟件安全主要是應用程序層的安全,包括兩個層面:①是應用程序本身的安全性。一般來說,應用程序的安全問題主要是由軟件漏洞導致的,這些漏洞可 以是設計上的缺陷或是編程上的問題,甚至是開發人員預留的后門。②是應用程序的數據安全,包括數據存儲安全和數據傳輸安全兩個方面。

(2)軟件安全性測試

一般來說,對安全性要求不高的軟件,其安全性測試可以混在單元測試、集成測試、系統測試里一起做。但對安全性有較高需求的軟件,則必須做專門的安全性測試,以便在破壞之前預防并識別軟件的安全問題。

安全性測試(Security Testing)是指有關驗證應用程序的安全等級和識別潛在安全性缺陷的過程。應用程序級安全測試的主要目的是查找軟件自身程序設計中存在的安全隱患,并 檢查應用程序對非法侵入的防范能力, 根據安全指標不同測試策略也不同。注意:安全性測試并不最終證明應用程序是安全的,而是用于驗證所設立策略的有效性,這些對策是基于威脅分析階段所做的假 設而選擇的。例如,測試應用軟件在防止非授權的內部或外部用戶的訪問或故意破壞等情況時的運作。

軟件安全性測試過程

(1)安全性測試方法

有許多的測試手段可以進行安全性測試,目前主要安全測試方法有:

①靜態的代碼安全測試:主要通過對源代碼進行安全掃描,根據程序中數據流、控制流、語義等信息與其特有軟件安全規則庫進行匹對,從中找出代碼中潛在的安全 漏洞。靜態的源代碼安全測試是非常有用的方法,它可以在編碼階段找出所有可能存在安全風險的代碼,這樣開發人員可以在早期解決潛在的安全問題。而正因為如 此,靜態代碼測試比較適用于早期的代碼開發階段,而不是測試階段。

②動態的滲透測試:滲透測試也是常用的安全測試方法。是使用自動化工具或者人工的方法模擬黑客的輸入,對應用系統進行攻擊性測試,從中找出運行時刻所存在 的安全漏洞。這種測試的特點就是真實有效,一般找出來的問題都是正確的,也是較為嚴重的。但滲透測試一個致命的缺點是模擬的測試數據只能到達有限的測試 點,覆蓋率很低。

③程序數據掃描。一個有高安全性需求的軟件,在運行過程中數據是不能遭到破壞的,否則就會導致緩沖區溢出類型的攻擊。數據掃描的手段通常是進行內存測試, 內存測試可以發現許多諸如緩沖區溢出之類的漏洞,而這類漏洞使用除此之外的測試手段都難以發現。例如,對軟件運行時的內存信息進行掃描,看是否存在一些導 致隱患的信息,當然這需要專門的工具來進行驗證,手工做是比較困難的。

(2)反向安全性測試過程

大部分軟件的安全測試都是依據缺陷空間反向設計原則來進行的,即事先檢查哪些地方可能存在安全隱患,然后針對這些可能的隱患進行測試。因此,反向測試過程 是從缺陷空間出發,建立缺陷威脅模型,通過威脅模型來尋找入侵點,對入侵點進行已知漏洞的掃描測試。好處是可以對已知的缺陷進行分析,避免軟件里存在已知 類型的缺陷,但是對未知的攻擊手段和方法通常會無能為力。

原文轉自:http://www.uml.org.cn/Test/200906258.asp

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97