# 安全测试检查清单 ## 自动化安全扫描工具 ### 1. OWASP ZAP ```bash # 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 ```bash npm audit npm audit fix ``` ### 3. Snyk ```bash 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 注入测试** ```sql phoneNumber: "13800138000' OR '1'='1" nickname: "'; DROP TABLE users; --" ``` - [ ] **NoSQL 注入测试** ```json {"accountSequence": {"$gt": 0}} ``` - [ ] **XSS 攻击测试** ```javascript nickname: "" avatarUrl: "javascript:alert('XSS')" ``` - [ ] **命令注入测试** ```bash 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 安全测试