二十一世紀,智能化的軟件成為商業決策、推廣等不可缺少的利器,很多軟件涉及了客戶商業上重要的信息資料,因此企業都很關心軟件的安全性。往往一個細小的安全漏洞,對客戶產生的影響都是巨大的。所以企業都想著盡可能的保證軟件的安全性,確保軟件在安全性方面能滿足客戶期望,在軟件測試行業,安全測試的重要性是不言而喻的。
一、那么什么是軟件安全性測試 ?
安全性測試是指有關驗證應用程序的安全等級和識別潛在安全性缺陷的過程。應用程序級安全測試的主要目的是查找軟件自身程序設計中存在的安全隱患,并檢查應用程序對非法侵入的防范能力,根據安全指標不同測試策略也不同。
二、安全性測試又有哪些方法和手段呢?
目前有許多種的測試手段可以進行安全性測試,安全測試方法分主要為三種:
①靜態的代碼安全測試:主要通過對源代碼進行安全掃描,根據程序中數據流、控制流、語義等信息與其特有軟件安全規則庫進行匹對,從中找出代碼中潛在的安 全漏洞。靜態的源代碼安全測試是非常有用的方法,它可以在編碼階段找出所有可能存在安全風險的代碼,這樣開發人員可以在早期解決潛在的安全問題。而正因為如此,靜態代碼測試比較適用于早期的代碼開發階段,而不是測試階段。
②動態的滲透測試:滲透測試也是常用的安全測試方法。是使用自動化工具或者人工的方法模擬黑客的輸入,對應用系統進行攻擊性測試,從中找出運行時刻所存在的安全漏洞。這種測試的特點是真實有效,一般找出來的問題都是正確的,也是較為嚴重的。但滲透測試一個致命的缺點是模擬的測試數據只能到達有限的測試點,覆蓋率很低。
③程序數據掃描。一個有高安全性需求的軟件, 在運行過程中數據是不能遭到破壞的,否則會導致緩沖區溢出類型的攻擊。數據掃描的手段通常是進行內存測試,內存測試可以發現許多諸如緩沖區溢出之類的漏洞,而這類漏洞使用除此之外的測試手段都難以發現。例如,對軟件運行時的內存信息進行掃描,看是否存在一些導致隱患的信息,當然這需要專門的工具來進行驗證(比如:HP 、IBM 和 Web )。
三、常見的軟件安全性缺陷和漏洞有哪些?
軟件的安全包含很多方面的內容,主要的安全問題是由軟件本身的漏洞造成的app安全性測試點,下面我們說說幾種常見的軟件安全性缺陷和漏洞,大家在程序開發或是測試時不妨考慮或驗證一下,我們所開發或是測試的程序,是否存在這些方面的安全隱患。
(1)SQL注入
所謂SQL注入式攻擊,是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務器執行惡意的SQL命令。在某些表單中,用戶輸入的內容直接用來構造(或者影響)動態SQL命令,或作為存儲過程的輸入參數,這類表單特別容易受到SQL注入式攻擊。
簡單舉個小例子,一個登錄模塊,讓你輸入用戶名密碼。我們一般都會老老實實的輸入我們的用戶名和密碼。但如果我們刻意的去繞過登錄認證呢?猜想下面這個sql語句,單說用戶名,開發人員很可能會這樣去數據庫里對比:
* from where =‘XXX’
當然可能更復雜,假如我們在輸入框里輸入下面一句特殊的字符會如何?’or‘1=1
這是段神奇的字符,因為這樣這個sql變成:
* from where =‘’or‘1=1’
這樣我們跳過了用戶名的驗證,實現了入侵app安全性測試點,是不是很簡單,看到這里大家不妨動手嘗試一下吧。
(2)修改提交數據
曾經某公司做過一個關于在線支付的商城,在安全性測試過程中,發現通過抓包抓到的提交價格(如使用火狐插件:live http ),經過修改再發包可以通過。簡單來說是本來100塊錢買的東西,抓包修改為1塊能成功購買。這成為了一個巨大的隱患。