安全性測試(security testing)是有關驗證應用程序的安全服務和識別潛在安全性缺陷的過程。
注意:安全性測試并不最終證明應用程序是安全的,而是用于驗證所設立策略的有效性,這些對策是基于威脅分析階段所做的假設而選擇的。
以下是我讀<>中的Web安全性測試章節內容,并進行修改的筆記,前面看了好多朋友寫的,不過不是很全,希望對大家有所幫助,建議大家還是買本<>此書絕對物超所值^_^
WEB安全性測試
一個完整的WEB安全性測試可以從部署與基礎結構、輸入驗證、身份驗證、授權、配置管理、敏感數據、會話管理、加密。參數操作、異常管理、審核和日志記錄等幾個方面入手。
1.安全體系測試
1)部署與基礎結構
網絡是否提供了安全的通信
部署拓撲結構是否包括內部的防火墻
部署拓撲結構中是否包括遠程應用程序服務器
基礎結構安全性需求的限制是什么
目標環境支持怎樣的信任級別
2)輸入驗證
如何驗證輸入
A.是否清楚入口點
B.是否清楚信任邊界
C.是否驗證Web頁輸入
D.是否對傳遞到組件或Web服務的參數進行驗證
E.是否驗證從數據庫中檢索的數據
F.是否將方法集中起來
G.是否依賴客戶端的驗證
H.應用程序是否易受SQL注入攻擊
I.應用程序是否易受XSS攻擊
如何處理輸入
3)身份驗證
是否區分公共訪問和受限訪問
是否明確服務帳戶要求
如何驗證調用者身份
如何驗證數據庫的身份
是否強制試用帳戶管理措施
4)授權
如何向最終用戶授權
如何在數據庫中授權應用程序
如何將訪問限定于系統級資源
5)配置管理
是否支持遠程管理
是否保證配置存儲的安全
是否隔離管理員特權
6)敏感數據
是否存儲機密信息
如何存儲敏感數據
是否在網絡中傳遞敏感數據
是否記錄敏感數據
7)會話管理
如何交換會話標識符
是否限制會話生存期
如何確保會話存儲狀態的安全
8)加密
為何使用特定的算法
如何確保加密密鑰的安全性
9)參數操作
是否驗證所有的輸入參數
是否在參數過程中傳遞敏感數據
是否為了安全問題而使用HTTP頭數據
10)異常管理
是否使用結構化的異常處理
是否向客戶端公開了太多的信息
11)審核和日志記錄
是否明確了要審核的活動
是否考慮如何流動原始調用這身份
2.應用及傳輸安全
WEB應用系統的安全性從使用角度可以分為應用級的安全與傳輸級的安全,安全性測試也可以從這兩方面入手。
應用級的安全測試的主要目的是查找Web系統自身程序設計中存在的安全隱患,主要測試區域如下。
注冊與登陸:現在的Web應用系統基本采用先注冊,后登錄的方式。
A.必須測試有效和無效的用戶名和密碼
B.要注意是否存在大小寫敏感,
C.可以嘗試多少次的限制
D.是否可以不登錄而直接瀏覽某個頁面等。
在線超時:Web應用系統是否有超時的限制,也就是說,用戶登陸一定時間內(例如15分鐘)沒有點擊任何頁面,是否需要重新登陸才能正常使用。
操作留痕:為了保證Web應用系統的安全性,日志文件是至關重要的。需要測試相關信息是否寫進入了日志文件,是否可追蹤。
備份與恢復:為了防范系統的意外崩潰造成的數據丟失,備份與恢復手段是一個Web系統的必備功能。備份與恢復根據Web系統對安全性的要求可以采用多種手段,如數據庫增量備份、數據庫完全備份、系統完全備份等。出于更高的安全性要求,某些實時系統經常會采用雙機熱備或多級熱備。除了對于這些備份與恢復方式進行驗證測試以外,還要評估這種備份與恢復方式是否滿足Web系統的安全性需求。
傳輸級的安全測試是考慮到Web系統的傳輸的特殊性,重點測試數據經客戶端傳送到服務器端可能存在的安全漏洞,以及服務器防范非法訪問的能力。一般測試項目包括以下幾個方面。
HTTPS和SSL測試:默認的情況下,安全HTTP(Soure HTTP)通過安全套接字SSL(Source Socket Layer)協議在端口443上使用普通的HTTP。HTTPS使用的公共密鑰的加密長度決定的HTTPS的安全級別,但從某種意義上來說,安全性的保證是以損失性能為代價的。除了還要測試加密是否正確,檢查信息的完整性和確認HTTPS的安全級別外,還要注意在此安全級別下,其性能是否達到要求。
服務器端的腳本漏洞檢查:存在于服務器端的腳本常常構成安全漏洞,這些漏洞又往往被黑客利用。所以,還要測試沒有經過授權,就不能在服務器端放置和編輯腳本的問題。
防火墻測試:防火墻是一種主要用于防護非法訪問的路由器,在Web系統中是很常用的一種安全系統。防火墻測試是一個很大很專業的課題。這里所涉及的只是對防火墻功能、設置進行測試,以判斷本Web系統的安全需求。
另推薦安全性測試工具:
Watchfire AppScan:商業網頁漏洞掃描器(此工具好像被IBM收購了,所以推薦在第一位)
AppScan按照應用程序開發生命周期進行安全測試,早在開發階段就進行單元測試和安全保證。Appscan能夠掃描多種常見漏洞,例如跨網站腳本、HTTP應答切開、參數篡改、隱藏值篡改、后門/調試選項和緩沖區溢出等等。
安全測試檢查系統對非法侵入的防范能力。安全測試期間,測試人員假扮非法入侵者,采用各種辦法試圖突破防線。例如,①想方設法截取或破譯口令;②專門定做軟件破壞系統的保護機制;③故意導致系統失敗,企圖趁恢復之機非法進入;④試圖通過瀏覽非保密數據,推導所需信息,等等。理論上講,只要有足夠的時間和資源,沒有不可進入的系統。因此系統安全設計的準則是,使非法侵入的代價超過被保護信息的價值。此時非法侵入者已無利可圖。
原文轉自:http://www.anti-gravitydesign.com