# 安全政策

## 概述

Claude How To 项目的安全对我们非常重要。本文档说明我们的安全实践，以及如何负责任地报告安全漏洞。

## 支持的版本

我们为以下版本提供安全更新：

| 版本 | 状态 | 支持至 |
|---------|--------|---------------|
| 最新版（main） | ✅ 活跃 | 当前版本 + 6 个月 |
| 1.x 发布版 | ✅ 活跃 | 直到下一个大版本 |

**注意**：作为一个教育指南项目，我们更关注维护当前最佳实践和文档安全，而不是传统意义上的版本支持。更新会直接应用到 main 分支。

## 安全实践

### 代码安全

1. **依赖管理**
   - 所有 Python 依赖都固定在 `requirements.txt` 中
   - 通过 dependabot 和人工审查进行定期更新
   - 每次提交都会运行 Bandit 安全扫描
   - 使用 pre-commit hooks 做安全检查

2. **代码质量**
   - 使用 Ruff 做 lint，能捕获常见问题
   - 使用 mypy 做类型检查，避免类型相关漏洞
   - 通过 pre-commit hooks 强制执行标准
   - 所有更改在合并前都要审查

3. **访问控制**
   - 对 `main` 分支启用分支保护
   - 合并前需要审查通过
   - 状态检查必须通过后才能合并
   - 仓库写权限受限

### 文档安全

1. **示例中不放密钥**
   - 所有示例中的 API key 都使用占位符
   - 从不硬编码凭据
   - `.env.example` 文件会展示所需变量
   - 明确提示密钥管理风险

2. **安全最佳实践**
   - 示例会展示安全模式
   - 文档中会突出安全警告
   - 链接到官方安全指南
   - 在相关章节中说明凭据处理方式

3. **内容审查**
   - 所有文档都会审查安全问题
   - 贡献指南中包含安全注意事项
   - 会验证外部链接和引用

### 依赖安全

1. **扫描**
   - Bandit 会扫描所有 Python 代码中的漏洞
   - 通过 GitHub 安全警报检查依赖漏洞
   - 定期进行人工安全审计

2. **更新**
   - 安全补丁会尽快应用
   - 大版本会谨慎评估
   - 更新日志会包含安全相关变更

3. **透明度**
   - 安全更新会记录在提交中
   - 漏洞披露会负责任地处理
   - 在适当情况下发布公开安全公告

## 漏洞报告

### 我们关注的安全问题

我们欢迎以下报告：
- **代码漏洞**：脚本或示例中的漏洞
- **依赖漏洞**：Python 包中的漏洞
- **加密问题**：任何代码示例中的密码学问题
- **认证/授权缺陷**：文档中的认证或授权问题
- **数据暴露风险**：配置示例中的数据泄露风险
- **注入漏洞**：SQL、命令等注入
- **SSRF / XXE / 路径穿越** 问题

### 不在范围内的安全问题

以下问题不在本项目范围内：
- Claude Code 本身的漏洞（请向 Anthropic 报告）
- 外部服务或库的问题（请向上游项目报告）
- 社会工程学或用户教育问题（与本指南无关）
- 没有 PoC 的理论漏洞
- 依赖库中已通过官方渠道报告的漏洞

## 如何报告

### 私密报告（推荐）

**如遇敏感安全问题，请使用 GitHub 的私密漏洞报告：**

1. 访问：<https://github.com/luongnv89/claude-howto/security/advisories>
2. 点击 “Report a vulnerability”
3. 填写漏洞细节
4. 请包含：
   - 漏洞的清晰描述
   - 受影响的组件（文件、章节、示例）
   - 潜在影响
   - 复现步骤（如适用）
   - 建议修复方式（如果你有）

**接下来会发生什么：**
- 我们会在 48 小时内确认收到
- 我们会调查并评估严重性
- 我们会与你一起修复
- 我们会协调披露时间线
- 如你愿意，我们会在安全公告中致谢

### 公开报告

对于不敏感或已公开的问题：

1. **创建 GitHub Issue** 并打上 `security` 标签
2. 包含：
   - 标题：以 `[SECURITY]` 开头并附简短说明
   - 详细描述
   - 受影响的文件或章节
   - 潜在影响
   - 建议修复方式

## 漏洞响应流程

### 评估（24 小时内）

1. 我们确认收到报告
2. 我们使用 [CVSS v3.1](https://www.first.org/cvss/v3.1/specification-document) 评估严重性
3. 我们判断是否在范围内
4. 我们向你反馈初步评估

### 开发（1-7 天）

1. 我们开发修复
2. 我们审查并测试修复
3. 我们创建安全公告
4. 我们准备发布说明

### 披露（取决于严重性）

**严重（CVSS 9.0-10.0）**
- 立即发布修复
- 发布公开公告
- 提前 24 小时通知报告者

**高危（CVSS 7.0-8.9）**
- 48-72 小时内发布修复
- 提前 5 天通知报告者
- 发布时公开公告

**中危（CVSS 4.0-6.9）**
- 在下一次常规更新中修复
- 发布时公开公告

**低危（CVSS 0.1-3.9）**
- 在下一次常规更新中修复
- 发布时附带公告

### 公布

我们发布的安全公告会包含：
- 漏洞描述
- 受影响组件
- 严重性评估（CVSS 分数）
- 修复版本
- 临时缓解方案（如适用）
- 对报告者的致谢（如获许可）

## 报告者最佳实践

### 报告前

- **确认问题**：你能稳定复现吗？
- **搜索已有 issue**：是否已经有人报告？
- **查看文档**：是否已有安全使用说明？
- **测试修复**：你建议的修复是否有效？

### 报告时

- **尽量具体**：提供准确的文件路径和行号
- **补充上下文**：为什么这是安全问题？
- **说明影响**：攻击者可能做什么？
- **提供步骤**：如何复现？
- **提出修复建议**：你会怎么修？

### 报告后

- **保持耐心**：我们的资源有限
- **积极响应**：尽快回答后续问题
- **保持保密**：在修复前不要公开披露
- **尊重协调流程**：按时间线推进披露

## 安全头与配置

### 仓库安全

- **分支保护**：主分支需要 2 份批准
- **状态检查**：所有 CI/CD 检查必须通过
- **CODEOWNERS**：关键文件有指定审查者
- **签名提交**：建议贡献者使用

### 开发安全

```bash
# 安装 pre-commit hooks
pre-commit install

# 本地运行安全扫描
bandit -c pyproject.toml -r scripts/
mypy scripts/ --ignore-missing-imports
ruff check scripts/
```

### 依赖安全

```bash
# 检查已知漏洞
pip install safety
safety check

# 或使用 pip-audit
pip install pip-audit
pip-audit
```

## 贡献者安全指南

### 编写示例时

1. **永远不要硬编码密钥**
   ```python
   # ❌ 不好
   api_key = "sk-1234567890"

   # ✅ 更好
   api_key = os.getenv("API_KEY")
   ```

2. **提醒安全影响**
   ```markdown
   ⚠️ **安全提示**：切勿把 `.env` 文件提交到 git。
   请立即加入 `.gitignore`。
   ```

3. **使用安全默认值**
   - 默认启用认证
   - 在适用场景中使用 HTTPS
   - 校验并清理输入
   - 使用参数化查询

4. **记录安全注意事项**
   - 解释为什么安全很重要
   - 展示安全与不安全的写法
   - 链接权威来源
   - 明显展示警告

### 审查贡献时

1. **检查是否泄露秘密**
   - 扫描常见模式（api_key=、password= 等）
   - 审查配置文件
   - 检查环境变量使用情况

2. **验证安全编码实践**
   - 没有硬编码凭据
   - 正确的输入验证
   - 安全的认证/授权
   - 安全的文件处理

3. **测试安全影响**
   - 这会不会被滥用？
   - 最坏情况是什么？
   - 有没有边界情况？

## 安全资源

### 官方标准
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [CWE Top 25](https://cwe.mitre.org/top25/)
- [CVSS Calculator](https://www.first.org/cvss/calculator/3.1)

### Python 安全
- [Python Security Advisories](https://www.python.org/dev/security/)
- [PyPI Security](https://pypi.org/help/#security)
- [Bandit Documentation](https://bandit.readthedocs.io/)

### 依赖管理
- [OWASP Dependency Check](https://owasp.org/www-project-dependency-check/)
- [GitHub Security Alerts](https://docs.github.com/en/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)

### 通用安全
- [Anthropic Security](https://www.anthropic.com/)
- [GitHub Security Best Practices](https://docs.github.com/en/code-security)

## 安全公告存档

过往安全公告可在 GitHub 的 [Security Advisories](https://github.com/luongnv89/claude-howto/security/advisories) 标签页查看。

## 联系方式

如需咨询安全相关问题或讨论安全实践：

1. **私密安全报告**：使用 GitHub 的私密漏洞报告
2. **一般安全问题**：使用 `[SECURITY]` 标签发起 discussion
3. **安全政策反馈**：创建带 `security` 标签的 issue

## 致谢

感谢帮助本项目保持安全的安全研究者和社区成员。负责任地报告漏洞的贡献者会在我们的安全公告中获得致谢（除非你希望匿名）。

## 政策更新

本安全政策会在以下情况更新：
- 发现新漏洞时
- 安全最佳实践演进时
- 项目范围发生变化时
- 至少每年一次

**最后更新**：2026 年 1 月
**下次审查**：2027 年 1 月

---

感谢你帮助 Claude How To 保持安全！🔒
