什麼是安全測試?

安全測試就是要提供證據表明,在面對敵意和惡意輸入的時候,應用仍然能夠充分的滿足它的需求。

a.如何提供證據?我們通過一組失敗的安全測試用例執行結果來證明web應用不滿足安全需求。

b.如何看待安全測試的需求?與功能測試相比,安全測試更加依賴於需求,因為它有更多可能的輸入和輸出可供篩選。

真正的軟體安全其實際上指的是風險管理,即我們確保軟體的安全程度滿足業務需要即可。

如何開展安全測試?

基於常見攻擊和漏洞並結合實際添加安全測試用例,就是如何將安全測試變為日常功能測試中簡單和普通的一部分的方法。

選擇具有安全意義的特殊邊界值,以及具有安全意義的特殊等價類,並將這些融入到我們的測試規劃和測試策略過程中。

但是若在功能測試基礎上進行安全測試,則需要增加大量測試用例。這意味著必須做兩件事來使其便於管理:縮小關注的重點和測試自動化。

Web安全測試通常要考慮的測試點?

1、問題:沒有被驗證的輸入

測試方法:

數據類型(字元串,整型,實數,等)

允許的字符集

最小和最大的長度

是否允許空輸入參數是否是必須的重複是否允許數值範圍特定的值(枚舉型)特定的模式(正則表達式)

2、問題:有問題的訪問控制

測試方法:

主要用於需要驗證用戶身份以及許可權的頁面,複製該頁面的url地址,關閉該頁面以後,查看是否可以直接進入該複製好的地址

例:從一個頁面鏈到另一個頁面的間隙可以看到URL地址,直接輸入該地址,可以看到自己沒有許可權的頁面信息

3、錯誤的認證和會話管理

例:對Grid、Label、Tree view類的輸入框未作驗證,輸入的內容會按照html語法解析出來

4、緩衝區溢出

沒有加密關鍵數據

例:view-source:http地址可以查看源代碼,在頁面輸入密碼,頁面顯示的是 *****, 右鍵,查看源文件就可以看見剛才輸入的密碼

5、拒絕服務

分析:攻擊者可以從一個主機產生足夠多的流量來耗盡狠多應用程序,最終使程序陷入癱瘓,需要做負載均衡來對付

6、不安全的配置管理

分析:Config中的鏈接字元串以及用戶信息,郵件,數據存儲信息都需要加以保護。

程序員應該做的:配置所有的安全機制,關掉所有不使用的服務,設置角色許可權帳號,使用日誌和警報

分析:用戶使用緩衝區溢出來破壞web應用程序的棧,通過發送特別編寫的代碼到web程序中,攻擊者可以讓web應用程序來執行任意代碼

7、注入式漏洞

例:一個驗證用戶登陸的頁面,

如果使用的sql語句為:

Select * from table A where username=』』 + username+』』 and pass word …..

Sql 輸入 『 or 1=1 ―― 就可以不輸入任何password進行攻擊

8、不恰當的異常處理

分析:程序在拋出異常的時候給出了比較詳細的內部錯誤信息,暴露了不應該顯示的執行細節,網站存在潛在漏洞

9、不安全的存儲

分析:帳號列表,系統不應該允許用戶瀏覽到網站所有的帳號,如果必須要一個用戶列表,推薦使用某種形式的假名(屏幕名)來指向實際的帳號。

瀏覽器緩存:認證和會話數據不應該作為GET的一部分來發送,應該使用POST

10、問題:跨站腳本(XSS)

分析:攻擊者使用跨站腳本來發送惡意代碼給沒有發覺的用戶,竊取他機器上的任意資料

測試方法:

HTML標籤:<…>…</…>

轉義字元:&(&);<(<);>(>); (空格) ;

腳本語言:

<script. language=『javascript』>

…Alert(『』)

</script>

特殊字元:『 』 < > /

最小和最大的長度

是否允許空輸入

總結:

隨著軟體發布周期的加快,軟體的安全將會變得越來越重要。如今軟體快速地進入市場,安全性往往會被忽略。但是測試人員應該時刻警惕著安全測試。對於一些社交應用來說,即使有一些問題,可能也不會太嚴重。但是,如果是涉及財務或者是醫療軟體時,對bug就不會有那麼高的容忍度。bug就像蛀蟲,存在漏洞就會發生不可想像的事情,給產品印象造成無法挽回的形象!

推薦閱讀:

相关文章