跳至内容

安全/api 键 正确性 ”">​

作用

禁止硬编码的 API 键和其他凭据。

为什么会这么糟糕?

硬编码 API 键并提交源控制是严重的安全性风险。

  1. 如果你的代码泄露,攻击者可以利用你的 API 键访问你的服务和数据。
  2. 意外捆绑 API 键可能导致它们公开显示在你的网站中,并压缩你的服务。
  3. 无论你雇用的任何开发者或承包商,都将有权访问你的服务,即使他们已经失去了对你的代码库的访问权限。
  4. 即使在删除之后,它们也会显示在你的 git 仓库的提交历史记录中。
  5. 密钥轮换需要代码更改和重新部署,因此无法由安全团队或自动化系统处理。
  6. 还有很多很多原因。
ts
const API_KEY = "abcdef123456";
const data = await fetch("/api/some/endpoint", {
  headers: {
    Authorization: `Bearer ${API_KEY}`,
  },
});

替代方案

警告

Oxc 团队并非安全专家。我们不认可任何特定密钥管理服务或策略。对你的用例进行调查,并选择最优解决方案/架构。

一种可能的替代方案是:将秘密存储在安全的秘密管理程序中(如 AWS KMSHashiCorp VaultPangea 等),并在你的应用程序启动时(例如,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");

参考资料

根据 MIT 许可证发布。