引言
安全性测试是保障软件系统免受恶意攻击的核心环节,其目标是识别系统在设计、开发、部署过程中存在的安全漏洞。本文将围绕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)