安全/api 键 正确性 ”">
作用
禁止硬编码的 API 键和其他凭据。
为什么会这么糟糕?
硬编码 API 键并提交源控制是严重的安全性风险。
- 如果你的代码泄露,攻击者可以利用你的 API 键访问你的服务和数据。
- 意外捆绑 API 键可能导致它们公开显示在你的网站中,并压缩你的服务。
- 无论你雇用的任何开发者或承包商,都将有权访问你的服务,即使他们已经失去了对你的代码库的访问权限。
- 即使在删除之后,它们也会显示在你的 git 仓库的提交历史记录中。
- 密钥轮换需要代码更改和重新部署,因此无法由安全团队或自动化系统处理。
- 还有很多很多原因。
ts
const API_KEY = "abcdef123456";
const data = await fetch("/api/some/endpoint", {
headers: {
Authorization: `Bearer ${API_KEY}`,
},
});
替代方案
警告
Oxc 团队并非安全专家。我们不认可任何特定密钥管理服务或策略。对你的用例进行调查,并选择最优解决方案/架构。
一种可能的替代方案是:将秘密存储在安全的秘密管理程序中(如 AWS KMS、HashiCorp Vault、Pangea 等),并在你的应用程序启动时(例如,Docker 容器或 EC2)请求它们。
示例
此规则中不正确的代码示例
js
const AWS_ACCESS_KEY_ID = "AKIA1234X678C123B567";
const OPENAI_API_KEY = "sk_test_1234567890";
此规则的正确代码示例
js
const AWS_ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID;
const OPENAI_API_KEY = await getSecret("open-ai-api-key");