---
name: security-testing
description: Use this skill when you need to generate a concrete security scan plan with OWASP-aligned checks, vulnerability checklist, and remediation steps; triggers include 安全测试, 安全扫描, 渗透测试, security testing, and security scan.
---

# 安全测试

## 何时使用

- 用户提供系统架构或接口信息，需要生成**可执行的安全扫描方案**。
- 需要围绕 OWASP Top 10、认证授权、数据保护做安全验证。

## 输入要求

| 必填 | 字段 | 说明 |
|------|------|------|
| ✅ | 系统范围 | 应用类型（Web/API/移动端）、核心模块 |
| ✅ | 认证方式 | 登录机制、Token 类型、权限模型 |
| ⬜ | 接口清单 | API 路径、参数、错误码 |
| ⬜ | 敏感数据 | PII、密钥、支付信息的位置和流向 |
| ⬜ | 已知问题 | 历史漏洞、近期变更、安全事件 |

## 执行流程

### 1. 输入审计

- 检查系统范围是否明确（哪些模块需要测试）
- 检查认证方式是否描述完整
- 缺失信息标记为「假设」

### 2. 攻击面识别

基于输入识别安全风险：

| 风险类别 | 检查内容 | 优先级 |
|----------|---------|--------|
| 认证 | 暴力破解、凭证填充、会话固定 | P0 |
| 授权 | 水平越权、垂直越权、IDOR | P0 |
| 输入处理 | XSS、SQL 注入、命令注入、SSRF | P0 |
| 敏感数据 | PII 泄露、密钥暴露、日志敏感信息 | P0 |
| 会话 | Token 过期、CSRF、Cookie 安全属性 | P1 |
| 配置 | 默认凭证、调试模式、CORS、安全头 | P1 |
| 依赖 | 已知 CVE、过时组件、供应链风险 | P1 |

### 3. 检查项生成

为每个风险类别生成具体检查项，格式：

```markdown
## [P0] SEC-<类别>-<序号>: <检查项标题>
[风险类别] 认证
[检查方法] <具体的测试步骤>
[预期安全行为] <系统应有的安全响应>
[风险描述] <如果不通过的安全影响>
[修复建议] <通过后的修复方向>
[验证方式] 手动 / 自动化脚本
```

### 4. 检查项校验

生成后必须执行以下校验：

- [ ] 覆盖 OWASP Top 10 中至少 5 个类别
- [ ] 每个 P0 风险类别至少有 2 条检查项
- [ ] 检查方法具体可执行（非泛泛描述）
- [ ] 有「预期安全行为」和「风险描述」
- [ ] 至少覆盖 1 条认证 + 1 条授权 + 1 条输入处理
- [ ] 不含攻击利用细节（防守导向）

### 5. 输出交付物

| 文件 | 内容 |
|------|------|
| `security-scan-plan.md` | 完整扫描方案（含攻击面、检查项、优先级） |
| `vulnerability-checklist.md` | 逐项检查清单（可直接用于执行） |
| `remediation-guide.md` | 修复指南（按优先级排序的修复建议） |

## 核心约束

- 保持**防守和评审导向**，不写成进攻式操作教程。
- 不提供可用于真实攻击的完整利用链。
- 区分「已确认弱点」「高风险疑点」「需要专项验证的项」。
- 没有足够范围时，不要夸大覆盖程度。

## 参考文件

- `prompts/security-testing.md`：详细执行规范。
- `references/troubleshooting.md`：常见安全问题排查。

## 常见误区

- 罗列所有可能问题 → 应按业务影响排优先级。
- 只看技术漏洞 → 配置错误和逻辑漏洞同样危险。
- 给出攻击教程 → 应给出防御建议。
- 忽略已知 CVE → 依赖组件扫描是必须的。
