name: security-scan description: 扫描代码以检测OWASP漏洞和安全问题。用于安全敏感的实现。
安全扫描技能
目的
识别和预防安全漏洞。
OWASP Top 10 检查清单
参考: checklists/owasp-top-10.md
A01: 访问控制破坏
- [ ] 所有端点都授权
- [ ] 默认拒绝
- [ ] 实现速率限制
- [ ] CORS正确配置
A02: 加密失败
- [ ] 数据传输加密 (HTTPS)
- [ ] 敏感数据静态加密
- [ ] 使用强算法
- [ ] 密钥妥善管理
A03: 注入
- [ ] 参数化查询
- [ ] 输入验证
- [ ] 输出编码
- [ ] 不使用eval()处理用户输入
身份验证检查清单
参考: checklists/auth-security.md
- [ ] 密码哈希 (bcrypt/argon2)
- [ ] 会话妥善管理
- [ ] 令牌安全存储
- [ ] 注销时使会话无效
数据验证检查清单
参考: checklists/data-validation.md
- [ ] 所有输入已验证
- [ ] 强制执行类型检查
- [ ] 设置大小限制
- [ ] 格式验证完成
自动化扫描脚本
#!/bin/bash
# 运行依赖审计
npm audit
# 运行静态分析 (如果可用)
npx eslint --plugin security .
# 检查秘密
npx secretlint .
漏洞严重级别
关键
- 远程代码执行
- SQL注入
- 身份验证绕过
- 敏感数据暴露
高
- 跨站脚本 (XSS)
- 跨站请求伪造 (CSRF)
- 不安全反序列化
- 权限提升
中
- 信息泄露
- 缺少加密
- 弱会话管理
- 日志记录不足
低
- 缺少安全头
- 详细错误消息
- 过时依赖 (无已知漏洞)
安全报告格式
保存到: docs/reviews/security-audit-{session}.md
修复流程
- 关键/高: 立即修复,阻止合并
- 中: 发布前修复
- 低: 在待办事项中跟踪
最佳实践
做
- 使用参数化查询
- 验证所有输入
- 编码所有输出
- 使用安全头
- 保持依赖更新
不做
- 硬编码秘密
- 信任用户输入
- 暴露堆栈跟踪
- 使用弱算法
- 跳过身份验证检查