| name | security-review |
| description | 安全审查方法论 —— OWASP Top 10、注入防护、认证授权、密钥管理 |
| category | security |
| loading | on-demand |
| triggers | {"keywords":["安全审查","安全审计","安全检查","漏洞","security","OWASP"]} |
这是什么
安全审查是系统性地检查代码、配置和架构中安全漏洞的过程。本 Skill 提供基于 OWASP 标准的结构化审查框架。
何时使用
- 新功能上线前的安全检查
- 第三方依赖更新后
- 安全事故后的全面排查
- 定期安全审计(建议每季度一次)
- 处理用户敏感数据的功能开发
核心规则
- 永远不信任输入:所有来自外部的数据——HTTP 请求参数、文件上传、API 响应、环境变量——都必须校验和清理后再使用。
- 最小权限原则:每个组件只拥有完成其职责所需的最小权限。数据库账号、API 密钥、文件系统权限,皆如此。
- 纵深防御:不依赖单一安全机制。就算一层被突破,还有下一层保护。
- 安全默认值:默认配置应是最安全的选项。需要额外操作才能降低安全级别,而非相反。
- 密钥不入代码:任何密钥、密码、Token、证书都不得出现在源代码中。使用环境变量、密钥管理服务或配置文件(已加入 .gitignore)。
工作流程
-
资产识别
- 列出系统处理的所有敏感数据:用户凭证、个人信息、支付数据、会话令牌
- 识���数据的存储位置、传输路径和处理节点
- 确定每个资产的保护级别需求
-
威胁建模
- 绘制数据流图,标注信任边界
- 使用 STRIDE 模型(欺骗、篡改、否认、信息披露、拒绝服务、权限提升)识别威胁
- 评估每个威胁的可能性和影响
-
代码审查
- 检查所有入口点:API 端点、表单提交、文件上传、WebSocket 连接
- 逐项检查 OWASP Top 10 对应防御措施
- 审查认证和授权逻辑的完整性
- 检查日志中是否有敏感数据泄露
-
配置审查
- HTTP 安全头检查:CSP、HSTS、X-Frame-Options、X-Content-Type-Options
- CORS 配置是否过于宽松
- 依赖库是否存在已知 CVE
- 容器和基础镜像安全配置
-
输出报告
- 按严重程度分级:严重、高危、中危、低危
- 每个漏洞附带复现步骤、影响评估、修复建议
- 严重和高危问题必须修复后才能上线
OWASP Top 10 检查清单
- 访问控制失效:检查每个端点的授权逻辑。用户能否访问其他用户的数据(IDOR)?
- 加密失效:敏感数据是否加密传输(HTTPS)和存储(AES-256)?密码哈希是否使用 bcrypt/argon2?
- 注入:SQL/NoSQL/OS 命令注入是否用参数化查询或安全 API 防护?
- 不安全的设计:是否做了威胁建模?是否有过度信任客户端的逻辑?
- 安全配置错误:是否关闭了调试模式?错误页面是否泄露堆栈跟踪?
- 易受攻击的组件:依赖是否最新?是否扫描了已知漏洞?
- 认证失败:是否限制了登录尝试次数?会话令牌是否安全生成和失效?
- 软件和数据完整性故障:是否验证了反序列化数据?CI/CD 管道是否安全?
- 日志和监控不足:安全事件是否被记录?是否有告警机制?
- SSRF:服务端请求是否校验了目标地址?是否限制了内网访问?
密钥检测自动化
- 扫描代码中的密钥模式:
sk-、Bearer、-----BEGIN、api_key、password =
- 使用 git-secrets 或 truffleHog 扫描 git 历史
- 预提交钩子阻止密钥提交
- 发现泄露后立即轮换密钥,不可仅删除代码
输入验证规范
- 白名单优于黑名单:定义允许的字符集或值范围,而非枚举禁止的内容
- 在服务端验证:客户端验证仅用于用户体验,安全验证必须在服务端
- 类型检查:数字、布尔、枚举值必须校验类型
- 长度限制:所有字符串输入设置合理的最大长度
认证与授权审查要点
- 多因素认证:敏感操作是否要求二次认证?
- 会话管理:会话令牌是否在登出时失效?是否有合理的超时?令牌是否安全随机生成?
- 密码策略:是否强制最小长度?是否检查常见弱密码?是否支持但不强制特殊字符?
- 速率限制:登录端点是否有速率限制?API 端点是否有调用频率限制?
- 权限模型:角色权限是否最小化?是否存在权限提升路径?
HTTP 安全头配置
| 头部 | 用途 | 推荐值 |
|---|
| Content-Security-Policy | 控制资源加载来源 | 按应用需求定制 |
| Strict-Transport-Security | 强制 HTTPS | max-age=31536000; includeSubDomains |
| X-Content-Type-Options | 禁止 MIME 嗅探 | nosniff |
| X-Frame-Options | 禁止页面被嵌入 | DENY 或 SAMEORIGIN |
| Referrer-Policy | 控制 Referer 信息 | strict-origin-when-cross-origin |
| Permissions-Policy | 控制浏览器 API | 按需开启 |
安全审查频率建议
| 审查类型 | 频率 | 触发条件 |
|---|
| 全量安全审查 | 每季度 | 定期 |
| 增量安全审查 | 每次功能上线 | 新代码 |
| 依赖审计 | 每次构建 | CI 自动化 |
| 渗透测试 | 每半年 | 外部测试团队 |
| 密钥扫描 | 每次提交 | Git 钩子自动化 |
参考标准
- OWASP Top 10(当前版本)—— Web 应用安全基准
- OWASP ASVS(应用安全验证标准)—— 四级安全验证框架
- OWASP 测试指南 —— 安全测试方法论
- CWE Top 25 —— 最危险的软件弱点
- NIST SP 800-53 —— 安全与隐私控制目录