playbook/.claude/skills/defense-in-depth/SKILL.md

2.2 KiB
Raw Blame History

name: defense-in-depth description: Defense in depth: add layered validation/guardrails across a data path (auth, validation, invariants, logging, tests). Triggers: defense in depth, harden, guardrails, validate, 安全加固, 分层校验, 防御, 兜底.

Defense in Depth分层校验 / 多道防线)

When to Use

  • 用户输入/外部数据进入关键路径(权限、资金、数据破坏、执行命令、生成 SQL
  • 需要让 bug “结构性不可能发生”,而不是靠单点 if 修补

Inputsrequired

  • Data path输入从哪里来最终影响什么读写/执行/外部调用)
  • Trust boundary哪些边界跨越了用户/服务/网络/磁盘/数据库)
  • Threat model简版最担心的 13 类失败(越权/注入/数据损坏/DoS
  • Constraints性能/兼容性/日志合规/可观测性要求

Procedurelayer by layer

  1. Map the Path

    • 画出路径:入口 → 解析/校验 → 业务决策 → 持久化/外部调用 → 输出
    • 标注每层的“必须成立的不变量”invariants
  2. Add Guards at Multiple Layers

    • Input layerschema/type/length/range/encoding 校验,拒绝非法输入
    • Auth layer:身份认证、权限校验、租户隔离、最小权限
    • Business layer:状态机/幂等/一致性约束、边界条件保护
    • Persistence layer:事务、约束、唯一索引、外键/检查约束(可用时)
    • Output layer:错误信息最小化、敏感字段脱敏、避免回显注入
  3. Observability

    • 在关键断点加日志/metrics/trace但不记录 secrets
    • 失败要“可定位”:错误码/上下文 key/相关 ID
  4. Tests

    • 每层至少一个代表性测试:合法/非法/越权/边界条件
    • 高风险路径补集成测试或 e2e 验证

Output Contractstable

  • Data path关键路径与边界简图/文字)
  • Risks主要风险与触发条件
  • Layers每层做了什么防线列表化
  • Tests新增/更新的验证点
  • Residual risk还剩哪些风险以及为什么接受

Guardrails

  • 防线要“可证明有效”:不写空泛口号
  • 任何会影响行为/接口的防线都必须评估兼容性与回滚策略