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

48 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 layer**schema/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
- 防线要“可证明有效”:不写空泛口号
- 任何会影响行为/接口的防线都必须评估兼容性与回滚策略