3.3 KiB
3.3 KiB
安全测试检查清单
自动化安全扫描工具
1. OWASP ZAP
# Docker 运行 ZAP 扫描
docker run -v $(pwd):/zap/wrk/:rw \
-t owasp/zap2docker-stable zap-baseline.py \
-t http://localhost:3000 -g gen.conf -r testreport.html
2. npm audit
npm audit
npm audit fix
3. Snyk
npm install -g snyk
snyk test
snyk monitor
手动安全测试
认证和授权
-
JWT Token 安全
- Token 在 URL 中不可见(只在 Header)
- Token 过期时间合理(access: 15min, refresh: 7天)
- Refresh token 轮换(用过的不能再用)
- Token 包含最小必要信息
- Token 签名算法安全(HS256/RS256)
-
设备授权
- 未授权设备无法使用 token
- 设备绑定无法伪造
- 设备限制(最多5个)有效
-
会话管理
- 登出后 token 立即失效
- 移除设备后该设备的 token 失效
- 冻结账户后所有 token 失效
输入验证
-
SQL 注入测试
phoneNumber: "13800138000' OR '1'='1" nickname: "'; DROP TABLE users; --" -
NoSQL 注入测试
{"accountSequence": {"$gt": 0}} -
XSS 攻击测试
nickname: "<script>alert('XSS')</script>" avatarUrl: "javascript:alert('XSS')" -
命令注入测试
deviceName: "; rm -rf /" -
路径遍历测试
avatarUrl: "../../etc/passwd"
业务逻辑漏洞
-
助记词安全
- 助记词不在日志中出现
- 助记词传输加密(HTTPS)
- 助记词存储加密
- 助记词不在错误信息中泄露
-
身份证号安全
- 返回时必须脱敏
- 数据库加密存储
- 不在日志中记录完整身份证号
-
暴力破解防护
- 登录失败次数限制
- SMS 验证码尝试次数限制
- 账户序列号枚举防护
- 验证码发送频率限制
-
重放攻击防护
- API 请求幂等性
- Nonce/时间戳验证
-
越权访问测试
- 用户 A 无法访问用户 B 的数据
- 用户 A 无法修改用户 B 的设备
- 普通用户无法访问管理员接口
敏感数据保护
-
传输安全
- 强制 HTTPS
- TLS 1.2+
- 安全的 Cipher Suite
-
存储安全
- 密码使用 bcrypt/argon2 加密
- 助记词 AES-256-GCM 加密
- 身份证号加密存储
- 数据库连接字符串不在代码中
-
日志安全
- 日志不包含密码
- 日志不包含完整助记词
- 日志不包含完整身份证号
- 日志不包含完整银行卡号
CORS 和 CSRF
- CORS 白名单配置正确
- CSRF Token 验证(如果有 Web 前端)
- SameSite Cookie 设置
速率限制
- 全局速率限制(如:100 req/min per IP)
- 登录接口限制(如:5 次失败锁定 15 分钟)
- SMS 发送限制(如:1 次/分钟, 5 次/小时, 10 次/天)
- 账户创建限制(如:1 个/IP/天)
依赖安全
- 所有依赖是最新稳定版
- 没有已知的 CVE 漏洞
- 定期更新依赖
渗透测试工具
- Burp Suite - 手动渗透测试
- SQLMap - SQL 注入自动化测试
- Postman - API 安全测试