跳到主内容
快讯直播
AI智模界
AI 词典

环境变量与 .env 文件:你的 API Key 是怎么泄露的

一句话定义:环境变量(environment variable)是操作系统或运行平台发给程序的键值对配置,程序启动时读取,不写进代码;.env 文件则是本地开发时用来集中记录这些键值对的纯文本文件,靠加载库在启动时将它们写进环境变量。

打个比方:代码像贴在公告栏上的菜谱,谁都能抄;API Key 则是你家的钥匙。把钥匙画在菜谱上,菜谱每复印一次,钥匙也就被复制一次。正确做法是让菜谱上只写一句“钥匙去门口挂钩上拿”,挂钩就是环境变量,它挂在你这台机器、这个进程上,不随代码走。.env 是写着“挂钩上放哪把钥匙”的便条,只应留在自己家里。

为什么 API Key 不能写进代码,理由有四条:

1. 代码是会流动的:被复制、被分享、被开源、被截图发到群里。

2. 一旦提交进 Git,删掉不等于消失。历史记录里还留着,任何人 clone 下来翻旧版本就能看到原文。

3. 公开仓库有大量自动化爬虫常年扫描密钥,泄露的 Key 往往很快就被拿去调用,消耗的是你的额度和账单。

4. 同一份代码在本地、测试、生产要连不同服务,写死就得改代码,改多了迟早出错。

那 .env 为什么照样会被提交进去? 原因很日常。第一,它以点开头,在 macOS 和 Linux 上 ls 默认不显示,git add . 一把梭就顺手带上了,git status 里也容易被忽略。第二,项目模板里常带一个 .env 让人填,新手以为它本来就该提交。第三,小团队图省事,把它当共享配置文件传来传去。这几种情况在真实项目里都相当常见。

相邻概念的区别,看一张表就清楚:

配置放在哪会不会进 Git适合装什么
直接写在代码里一定会什么都别放敏感的
config.yaml 等配置文件通常会端口、日志级别等非敏感项
.env(已加进 .gitignore)不会本地开发用的 Key、数据库密码
平台自带的环境变量/密钥管理服务不会生产环境密钥,通常可审计、可轮换

给从业者的实际建议:代码里只通过读取环境变量的接口取值(Python 的 os.environ、Node 的 process.env 之类),把 .env 写进 .gitignore,仓库里放一份 .env.example,只列键名、不填值。更关键的是:万一已经提交了,建议立刻作废并重新生成那把 Key,不要只删文件再提交一次。删文件挡不住历史记录,也挡不住已经被抓走的那份。先轮换,再清理,这个顺序别搞反。至于密钥管理服务具体怎么用,以各家官方文档为准。

对普通职场人来说,这条规则值得记住:凡是能开门的东西(Key、密码、AI 词典:Token">Token),都不要出现在会和别人共享的文本里,包括代码、文档、聊天记录和截图。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。