指南 · 安全
凭据泄露:现在该怎么办
如果您的代码曾将密钥、令牌、密码或会话 Cookie 发送到 example-petstore.com 或 example-commerce-host.com,那么它已到达一台不受您控制的服务器。请将其视为已泄露并进行替换。只有签发它的服务才能将其撤销。
立即执行
- 在签发该密钥、令牌或密码的服务中将其撤销。仅从代码中删除是不够的。
- 签发新的凭据,并将其保存在配置或密钥管理工具中,而不是代码或版本控制系统中。
- 先更正代码中的地址,确保新凭据只发送到真实服务。
- 检查该服务的访问日志或审核日志,查找自首次向示例域名发出请求以来您无法识别的活动。
- 如果发送了真实的银行卡信息,请联系发卡机构。
按服务提供商撤销
| 服务提供商 | 需要撤销的内容 | 位置 |
|---|---|---|
| GitHub | 个人访问令牌 | Managing your personal access tokens |
| Google Cloud | API 密钥、服务账号密钥 | Manage API keys · Respond to compromised credentials |
| AWS | IAM 访问密钥 | Manage access keys for IAM users |
| Stripe | 私钥和受限密钥 | API keys |
| Slack | 机器人令牌和用户令牌 | auth.revoke |
| Anthropic | API 密钥 | API key best practices |
| OpenAI | API 密钥 | Best practices for API key safety |
| 其他服务 | 任何密钥、令牌或密码 | 该服务的安全设置或 API 设置;在其文档中搜索“revoke”或“rotate”。 |
后续工作
- 从代码库、日志和配置历史记录中删除旧凭据。改写历史记录并不能使其重新变得安全,只有撤销才能做到。
- 在您的代码库中启用密钥扫描(例如 GitHub secret scanning),以便尽早发现泄露的密钥。
- 添加一项检查,防止示例地址进入生产环境。请参阅配置 API 客户端和 SDK。
来源
- Secrets Management Cheat Sheet OWASP
- Secret scanning GitHub Docs