安全性测试常规测试点全解析:从基础到高级的实战指南

时间:2025-04-27 22:01:10

引言

安全性测试是保障软件系统免受恶意攻击的核心环节,其目标是识别系统在设计、开发、部署过程中存在的安全漏洞。本文将围绕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获取他人数据)
  • 未授权访问:未登录用户能否直接访问受限页面
测试方法:
  1. 使用Burp Suite拦截请求,修改URL参数(如user_id=1改为user_id=2
  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)