以下是根据Web应用安全需求设计的详细测试用例,覆盖身份认证、权限控制、数据安全、日志审计四大核心领域,包含正常场景和异常场景的验证:
一、身份认证测试用例
1. 密码复杂度验证
| 场景 | 测试步骤 | 预期结果 |
|---|
| 正常-符合复杂度要求 | 输入符合策略的密码(如Passw0rd!) | 系统允许注册/修改密码 |
| 异常-密码过短 | 输入6字符密码(如abc123) | 提示"密码长度至少8位" |
| 异常-缺乏特殊字符 | 输入无特殊字符的密码(如Password123) | 提示"需包含特殊字符" |
| 异常-字典密码 | 输入常见弱密码(如Qwerty123) | 提示"密码过于常见,请修改" |
2. 多因素认证(MFA)
| 场景 | 测试步骤 | 预期结果 |
|---|
| 正常-MFA启用 | 登录时输入正确密码+短信验证码 | 成功进入系统 |
| 异常-验证码错误 | 登录时输入正确密码+错误验证码 | 提示"验证码无效" |
| 异常-绕过MFA | 直接访问需认证的API(未触发MFA) | 返回401 Unauthorized |
3. 会话管理
| 场景 | 测试步骤 | 预期结果 |
|---|
| 正常-会话超时 | 登录后闲置超过15分钟,刷新页面 | 跳转至登录页 |
| 异常-会话固定攻击 | 登录前获取Session ID,登录后复用该ID | 会话失效,要求重新认证 |
| 异常-注销后会话复用 | 退出登录后,用原Cookie访问受保护页面 | 返回403 Forbidden |
二、权限控制测试用例
1. 垂直越权(普通用户→管理员)
| 场景 | 测试步骤 | 预期结果 |
|---|
| 正常-管理员权限 | 管理员访问用户管理接口 /admin/users | 返回用户列表 |
| 异常-普通用户越权 | 普通用户访问 /admin/users | 返回403 Forbidden |
2. 水平越权(用户A→用户B)
| 场景 | 测试步骤 | 预期结果 |
|---|
| 正常-访问自身数据 | 用户A访问 /user/profile?id=A | 返回用户A的数据 |
| 异常-访问他人数据 | 用户A修改URL为 /user/profile?id=B | 返回404 Not Found 或空数据 |
3. 接口未授权访问
| 场景 | 测试步骤 | 预期结果 |
|---|
| 异常-未登录访问 | 未登录直接访问 /api/payment/history | 返回401 Unauthorized |
三、数据安全测试用例
1. 传输加密(HTTPS)
| 场景 | 测试步骤 | 预期结果 |
|---|
| 正常-强制HTTPS | 访问 http://example.com/login | 自动跳转至 https:// |
| 异常-混合内容 | 页面加载HTTP资源(如图片) | 浏览器控制台报Mixed Content错误 |
2. 存储加密
| 场景 | 测试步骤 | 预期结果 |
|---|
| 正常-敏感字段加密 | 检查数据库中的password字段 | 显示为bcrypt哈希值(非明文) |
| 异常-日志泄露 | 在错误日志中搜索用户手机号 | 显示脱敏值(如138****1234) |
3. 客户端数据安全
| 场景 | 测试步骤 | 预期结果 |
|---|
| 异常-JS暴露密钥 | 浏览器检查JS文件 | 无API密钥/数据库密码等硬编码信息 |
四、日志与审计测试用例
1. 关键操作记录
| 场景 | 测试步骤 | 预期结果 |
|---|
| 正常-登录失败日志 | 故意输入错误密码3次 | 日志记录IP、时间、失败次数 |
| 正常-数据修改审计 | 管理员删除用户 | 日志记录操作者、被删用户ID |
2. 日志可追溯性
| 场景 | 测试步骤 | 预期结果 |
|---|
| 异常-日志篡改 | 尝试手动删除日志文件 | 权限拒绝(只读访问) |
| 正常-时间同步 | 检查服务器与日志系统时间 | 时间误差≤1秒 |
测试工具推荐
- 权限越权测试:Burp Suite(Repeater模块篡改参数)
- 传输加密验证:浏览器开发者工具 > Security面板
- 日志分析:ELK Stack(Elasticsearch+Logstash+Kibana)
- 自动化扫描:OWASP ZAP(基线扫描+主动扫描)
关键注意事项
- 敏感操作脱敏:测试支付功能时使用测试卡号(如
4242 4242 4242 4242) - 破坏性操作隔离:数据删除类测试在独立环境执行
- 合规性验证:
- 金融场景:检查是否符合PCI DSS(支付卡存储加密)
- 欧盟用户:验证GDPR要求的用户数据删除审计日志
通过此用例清单,可覆盖OWASP Top 10中Broken Access Control(权限漏洞)、Cryptographic Failures(加密失效)、Identification Failures(认证缺陷)三大核心风险。
针对 Web 安全四大核心需求 设计的详细测试用例方案,涵盖 正常场景 + 异常场景,确保全面验证系统的安全性:
一、身份认证测试
✅ 正常场景测试用例
| # | 测试项 | 预置条件 | 操作步骤 | 预期结果 |
|---|
| 1 | 强密码策略生效 | 无 | 尝试注册/修改密码时输入 Abcd123!@#(符合复杂度要求) | ✅ 成功通过;拒绝包含空格的特殊字符除外 |
| 2 | MFA 功能有效 | 已绑定手机令牌/邮箱OTP | 登录时完成密码+动态口令双重验证 | ✅ 登录成功;禁用仅凭密码直接登录 |
| 3 | 会话持久化控制 | 首次认证后保持会话活跃 | 连续操作超过空闲阈值(如30分钟)后再次请求 | ❌ 自动登出并销毁会话ID;需重新认证 |
| 4 | 单点登录(SSO)同步 | 已通过统一身份源认证 | 在新设备打开同一站点 | ✅ 继承已有会话;无需重复登录 |
⚠️ 异常场景测试用例
| # | 测试项 | 预置条件 | 操作步骤 | 预期结果 |
|---|
| 5 | 弱密码攻击防御 | 故意使用常见弱密码 | 反复提交 Password123, admin888 等 | ❌ 触发账户锁定策略(如5次失败后冻结);展示图形验证码阻断暴力破解 |
| 6 | CSRF令牌有效性 | 篡改前端隐藏域中的token值 | 发送伪造的POST请求至敏感接口(如/transfer) | ❌ 服务器识破无效Token;返回403禁止访问 |
| 7 | 会话固定劫持防护 | 截获合法用户的Session ID | 使用工具强制注入已知Session ID到新客户端 | ❌ 旧会话立即失效;新增设备需二次验证 |
| 8 | JWT过期清理机制 | 手动延长access_token有效期 | 在使用refresh_token换取新token期间突然断电 | ✅ 重启后旧token立即作废;防止重放攻击 |
二、权限控制测试
✅ 正常场景测试用例
| # | 测试项 | 预置条件 | 操作步骤 | 预期结果 |
|---|
| 9 | RBAC模型准确性 | 创建三级角色:超级管理员→部门主管→普通员工 | 各角色分别访问其职责范围内的菜单/按钮 | ✅ 仅显示授权资源;未授权功能灰显不可点击 |
| 10 | 细粒度数据隔离 | A用户属于华东分公司 | A试图查看华北分公司的销售报表 | ❌ 提示"无权访问";返回空白列表而非报错信息 |
| 11 | 临时提权审批流程 | 提交工单申请高级权限 | 经上级审批后获得限时权限 | ✅ 权限按时自动回收;超时后恢复基础权限 |
⚠️ 异常场景测试用例
| # | 测试项 | 预置条件 | 操作步骤 | 预期结果 |
|---|
| 12 | 垂直越权 (VIP升级漏洞) | 普通会员账号 | 构造URL: /upgrade?user=ordinary&role=administrator | ❌ 系统校验当前身份不允许此操作;日志报警 |
| 13 | 水平越权 (同行窥探) | 用户A尝试访问用户B的个人资料页 | 将URL中的ID从1001改为1002(另一个存在的用户ID) | ❌ 隐藏非本人数据;返回"找不到该页面" |
| 14 | 文件上传权限滥用 | 低权限角色上传脚本文件 | 尝试上传webshell.php到服务器目录 | ❌ 重命名为随机字符串+后缀白名单过滤;禁止执行 |
| 15 | 接口越权调用 | 盗用他人API Key | 使用别人的凭证调用私密接口(如/api/deleteUser) | ❌ 鉴权失败返回401;绑定IP限制防冒用 |
三、数据安全测试
✅ 正常场景测试用例
| # | 测试项 | 预置条件 | 操作步骤 | 预期结果 |
|---|
| 16 | 传输层加密(TLS) | 抓包分析网络流量 | 访问登录页及后续请求 | ✅ HTTPS强制跳转;证书链完整可信 |
| 17 | 存储加密(AES/RSA) | 查看数据库备份文件 | 检索加密后的信用卡号字段 | ✅ 密文不可逆且带盐值;脱敏显示前六后四位 |
| 18 | 密钥轮换策略 | 定期更换加密密钥 | 新旧密钥并行期的历史数据解密 | ✅ 兼容旧密钥解密历史数据;新版本自动刷新 |
⚠️ 异常场景测试用例
| # | 测试项 | 预置条件 | 操作步骤 | 预期结果 |
|---|
| 19 | SQL注入抵抗 | 输入框写入 ’ OR 1=1 – | 尝试绕过登录认证 | ❌ 报语法错误;启用WAF拦截恶意字符 |
| 20 | XSS反射型攻击 | 搜索框插入 alert(1) | 提交后观察页面渲染 | ❌ 转义为实体编码;Content-Security-Policy生效 |
| 21 | 内存泄漏泄密 | 监控进程内存快照 | 多次快速切换账户进行高风险操作 | ❌ 敏感变量及时清零;避免残留指针指向明文 |
| 22 | 剪贴板劫持 | 复制银行卡号粘贴到第三方软件 | 监控系统剪切板内容 | ❌ 自动遮盖星号;禁止跨应用读取剪贴板数据 |
四、日志与审计测试
✅ 正常场景测试用例
| # | 测试项 | 预置条件 | 操作步骤 | 预期结果 |
|---|
| 23 | 关键事件记录完整性 | 模拟10次失败登录尝试 | 查看系统日志文件 | ✅ 每条记录含时间戳、IP、用户名、错误码 |
| 24 | 审计追踪能力 | 发生数据泄露事件 | 根据日志回溯可疑操作序列(谁何时改了什么) | ✅ 完整还原操作链条;关联上下文关联ID |
| 25 | 日志分级存储 | 生成海量日志触发滚动策略 | 检查日志切割是否正常;归档压缩包完整性 | ✅ 按日期分割文件;保留周期内可追溯 |
⚠️ 异常场景测试用例
| # | 测试项 | 预置条件 | 操作步骤 | 预期结果 |
|---|
| 26 | 日志篡改检测 | 手工修改本地日志文件内容 | 重启服务使改动生效 | ❌ 数字签名验签失败;触发告警通知管理员 |
| 27 | 日志洪水攻击 | 并发上千次无关请求淹没日志通道 | 观察核心业务日志是否仍能正常输出 | ✅ 优先级队列保障重要日志不被挤压丢弃 |
| 28 | 境外IP溯源伪装 | 伪造外国IP地址发起攻击 | 结合WHOIS信息及地理定位交叉验证 | ❌ 标记为可疑代理节点;增加额外验证因子 |