用途
该技能用于对应用程序、API、认证、授权、数据、依赖、密钥与基础设施进行威胁建模和安全审查。
触发时机:
- 变更引入或触及信任边界、身份、外部输入(上传、URL、查询、反序列化)或敏感数据时。
- 在设计具有新攻击面的功能之前(新公开端点、新集成、新用户类型),进行预防性威胁建模。
不适用场景:
- 不作为流水线/部署凭据审查的替代;该场景应使用 $specsfy-specialist-delivery-engineering。本技能聚焦应用及其数据,而非交付流水线。
- 当风险涉及按行或按租户的数据访问建模时,应与 $specsfy-specialist-postgres / $specsfy-specialist-supabase 组合使用。
主要能力
- 在考虑控制措施之前,先梳理资产、参与者、信任边界、外部输入与副作用(状态变更)。
- 在选择控制措施之前,先定义可信威胁及其真实影响,不为系统中不存在的威胁实施防御。
- 在每次读取或变更数据的操作中,检查认证、按对象授权(不仅是按路由)与租户隔离。
- 按预期类型、大小与目标验证所有输入;按渲染上下文规范化输出;在适用时保护可变操作免受重放与 CSRF。
- 审查密钥管理、传输与静态加密、会话生命周期、存在漏洞的依赖与生产配置。
- 在识别出的关键边界上落地正向测试(授权流程可用)与负向测试(未授权流程失败)。
- 记录残余风险、负责人、关联的可观测信号与响应计划——没有系统是“100% 安全”的,只有已知且被监控的风险。
使用方式(流程)
- 梳理资产、参与者、信任边界、外部输入与副作用。
- 定义可信威胁及其真实影响。
- 检查认证、按对象授权与租户隔离。
- 验证输入、规范化输出、防护重放与 CSRF。
- 审查密钥、加密、会话、依赖与生产配置。
- 在关键边界落地正向与负向测试。
- 记录残余风险、负责人、可观测信号与响应计划。
标准与原则
- 默认拒绝,为每个身份与操作授予所需的最小权限。
- 在服务端对每次操作与每个被访问对象进行授权——绝不信任仅客户端校验,也不信任来自客户端且未重新校验归属/租户的对象 ID。
- 默认将文件上传、用户提供的 URL、使用外部数据渲染的模板、动态查询与外部数据反序列化视为敌意输入。
- 不自行实现加密;使用成熟的密码学原语与库。绝不记录密钥、令牌、密码或敏感数据,即使在调试环境。
- 定期轮换凭据,优先使用临时身份(短期令牌、STS/OIDC)而非长期静态密钥。
- 按参与者与资源(按用户/API key/租户的速率限制)缓解滥用,而不仅按 IP——共享 IP(NAT、代理)会惩罚合法用户,分布式攻击者可绕过仅按 IP 的限制。
- 修复漏洞时修复根因并添加回归测试,不向需要修复或验证之外的人披露利用细节。
反模式
- 仅按路由校验授权(/admin/* 受保护)而不校验路由内具体访问对象:租户 A 的已认证用户仅通过替换 URL 中的 ID 即可访问租户 B 的 /api/orders/123(IDOR——不安全的直接对象引用)。
- 仅在客户端(浏览器 JavaScript)验证输入而不在服务端重新校验:任何直接请求 API 都会完全绕过客户端校验。
- 信任客户端声明的 Content-Type 或文件扩展名来决定如何处理上传:允许将恶意文件伪装成无害类型。
- 将应用密钥(API key、数据库密码)存放在无进程/日志访问控制的环境变量中,或记录包含认证令牌的完整请求负载——即使源头有正确的“保险库”,密钥也会通过间接通道泄露。
- 在没有具体负向测试证明原始向量不再生效的情况下,宣称“系统安全”或“漏洞已修复”。
验证
- 负向测试用例:未认证访问、错误身份、错误租户与已处理请求的重放——均应以受控方式失败。
- 使用项目已采用的工具进行依赖漏洞分析与泄露密钥扫描,作为正常流程的一部分运行,而不仅在大型发布前手动执行。
- 生产安全配置:安全响应头(如 Content-Security-Policy、Strict-Transport-Security)、Cookie 属性(HttpOnly、Secure、SameSite)与限制为真正必要来源的 CORS 策略。
- 每项声称的控制措施与仍存在的残余风险都要有具体证据——绝不在没有测试证明的情况下以绝对措辞宣称某事物“安全”。
相关技能
- $specsfy-specialist-ansible 与 $specsfy-specialist-docker 实现主机、容器与运行时加固;本技能定义配置需要证明的威胁、权限与控制。
- $specsfy-specialist-laravel、$specsfy-specialist-nextjs 与 $specsfy-specialist-shadcn-ui 实现应用表面;授权、服务端校验与数据暴露仍归本技能。
- $specsfy-specialist-code-review 执行广泛审查,$specsfy-specialist-observability 记录滥用信号而不泄露敏感数据。
- $specsfy-specialist-postgres 与 $specsfy-specialist-supabase 用于数据层面的按行/租户授权建模(RLS、约束)。
- $specsfy-specialist-delivery-engineering 用于流水线凭据加固、制品签名与供应链。
- $specsfy-specialist-web-api-design 用于风险源于 API 契约设计(动词、版本化、敏感字段暴露)的场景。
阅读 references/standards.md 获取按边界的威胁建模清单、ASVS、API 安全与供应链,含一手来源。