引言
安全性測試是保障軟件系統免受惡意攻擊的核心環節,其目標是識別系統在設計、開發、部署過程中存在的安全漏洞。本文將圍繞12大常規安全測試點展開,結合具體測試方法、示例代碼及防范建議,幫助讀者構建完整的安全測試體系。
一、認證與授權測試
1. 認證機制測試
測試點:
- 弱密碼檢測(如密碼長度<8、純數字密碼)
- 暴力破解防護(是否限制登錄嘗試次數、是否啟用驗證碼)
- 多因素認證(MFA)有效性(如短信驗證碼、TOTP令牌)
- 認證憑證泄露(如Cookie未加密、Session ID明文傳輸)
示例代碼:弱密碼檢測
import re def is_weak_password(password: str) -> bool: """檢測密碼是否為弱密碼(長度<8、無混合字符)""" if len(password) < 8: return True # 檢查是否包含數字、字母、特殊字符中的至少兩種 has_digit = re.search(r'\d', password) has_alpha = re.search(r'[a-zA-Z]', password) has_special = re.search(r'[!@#$%^&*]', password) valid_types = sum([has_digit, has_alpha, has_special]) return valid_types < 2 # 少于兩種字符類型視為弱密碼 # 測試用例
print(is_weak_password("1234567")) # True(長度7)
print(is_weak_password("abcdefgh")) # True(純字母)
print(is_weak_password("Abc123!@#")) # False(強密碼)
防范建議:
- 強制密碼復雜度策略(長度≥8,包含三類字符)
- 登錄接口添加速率限制(如5分鐘內最多5次失敗嘗試)
- 使用HTTPS加密傳輸認證憑證
2. 授權機制測試
測試點:
- 垂直越權:低權限用戶能否訪問高權限功能(如普通用戶訪問管理員接口)
- 水平越權:用戶能否訪問其他用戶的資源(如通過修改URL中的用戶ID獲取他人數據)
- 未授權訪問:未登錄用戶能否直接訪問受限頁面
測試方法:
- 使用Burp Suite攔截請求,修改URL參數(如
user_id=1
改為user_id=2
) - 調用API時刪除
Authorization
頭,驗證是否返回401錯誤
示例場景:水平越權漏洞
# 正常請求:獲取用戶1的訂單
GET /api/orders?user_id=1 HTTP/1.1
Authorization: Bearer [用戶1令牌] # 攻擊請求:修改user_id為2
GET /api/orders?user_id=2 HTTP/1.1
Authorization: Bearer [用戶1令牌]
若返回用戶2的訂單數據,則存在水平越權漏洞。
防范建議:
- 服務端對用戶權限進行二次校驗(如檢查請求的user_id是否屬于當前登錄用戶)
- 使用RBAC(角色基于訪問控制)明確權限邊界
二、會話管理測試
測試點:
- 會話固定攻擊:攻擊者能否重用舊Session ID登錄
- 會話超時機制:閑置會話是否按時失效(如30分鐘未操作自動退出)
- Session ID安全性:是否使用隨機高強度字符串(避免順序生成)
- Cookie安全屬性:是否啟用
HttpOnly
(防XSS)、Secure
(僅HTTPS傳輸)、SameSite
(防CSRF)