文章讨论了 2025 年 Node.js 环境变量管理的最佳实践:本地开发可优先使用 Node.js 20.6.0+ 原生 --env-file,旧版本可继续使用 dotenv;但对生产环境中的密钥、API Key、数据库凭证等敏感信息,不应依赖 .env 文件,而应使用 Infisical 这类密钥管理工具,以获得加密存储、权限控制、版本回滚和审计日志等能力。文章还给出了从 .env 迁移到 Infisical 的基本步骤,并强调不要把敏感信息提交到版本控制。
发布于 2025 年 2 月 24 日,星期一

TL;DR:尽管 Node.js v20.6.0+ 引入了原生 --env-file 标志,可以直接从文件中读取环境变量并将其注入 process.env,dotenv 仍然是最受欢迎的 npm 依赖之一(每周下载量 4500 万+!)。无论你如何选择,对于不应暴露的敏感值,例如 API keys 和其他 secrets,你都应该考虑使用像 Infisical 这样的 secrets manager。
你知道吗?安全研究人员发现,在 5.8 万多个网站暴露的环境文件中,包含了超过 100 万个 secrets?
我们之前在这篇博客中曾主张弃用 .env files,因为当它们用于存储敏感信息时,我们建议改用像 Infisical 这样的 secrets manager。
然而,并不是所有 environment variables 都是敏感的,一些开发者在本地开发时仍然更倾向于使用 .env files。在本文中,我们将探讨在 Node.js 应用中管理 environment variables 的最佳实践,以及如何避免常见陷阱。
.env 支持和 --env-file 标志node --env-file=.env app.js
require('dotenv').config()
对于生产部署,使用 .env files 存储 secrets 会带来几个安全风险:
相反,使用 Infisical 来管理你的 secrets:
// 安装 Infisical CLI
npm install -g @infisical/cli
// 使用 Infisical 运行你的应用程序
infisical run --env=<secret-env> --path=<path/to/secret> -- node app.js
阅读 Infisical CLI 文档,了解有关设置和管理 secrets 的更多细节。
npm install -g @infisical/cli
infisical init
Before:
{
"scripts": {
"start": "node --env-file=.env app.js"
}
}
After:
{
"scripts": {
"start": "infisical run --env=<secret-env> --path=<path/to/secret> -- node app.js"
}
}
process.env?你有三种主要选择:
--env-file 标志(Node.js 20.6.0+)虽然 dotenv 适合本地开发,但并不推荐用于生产环境。相反:
.env 支持dotenv密码、API keys、access tokens、数据库凭据或任何形式的身份验证凭据都被视为敏感信息。此外,任何存储个人身份信息(PII)或其他机密数据的变量也应被视为敏感。
如有疑问,最好采取谨慎态度,将所有 environment variables 都视为敏感。
Product, Infisical
- 原文链接: infisical.com/blog/stop-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码