人人都是 Builder:别让你的 API Key 在 GitHub 上裸奔——谈谈环境变量与密钥安全
本文适合你,如果—— 你是用 AI 做东西的非程序员:产品、运营、创业者、独立 Builder。 本文不适合你,如果—— 你是专业工程师,本文对你来说是废话。 上一篇我们聊了数据存储与数据库,解决了让应用持久保存数据的问题。 随着你的应用功能越来越丰富,你不可避免地需要调用各种第三方服务——比如 OpenAI、Claude 的大模型 API,云数据库的连接密码,或者支付接口的密钥。 大多数非程序员开始用 AI 写代码时,根本没听过“环境变量”这个概念。不知道这些敏感的 API 密钥应该藏在哪里。而 AI 经常不能面面俱到,只要你不提醒,它可能就把敏感信息直接硬编码在代码里。 这时候,最容易发生的惨剧出现了:前脚刚把代码推送到 GitHub,后脚就收到短信或邮件通知——你的 API 密钥被盗用,额度几秒钟内被刷爆,甚至欠下高额账单。 这一篇,咱们就来聊聊怎么给你的密钥加把锁 —— 环境变量(Environment Variables)与密钥安全。 一、密钥安全的三条红线 在聊具体的做法之前,先记住三条不可逾越的红线: 绝对不要把 API Key 直接写在代码文件里(Hardcode/硬编码):代码会被分享、被上传,一旦泄露,就很容易被盗用。很多黑灰产爬虫就等着你把密钥上传到 GitHub 呢! 绝对不要把包含真实密钥的配置文件上传到 GitHub:哪怕是私有仓库,也可能因为误操作变成公开仓库。 前端代码(浏览器里跑的代码)里绝对不能出现安全密钥:最容易踩坑的就是对象存储前端直传(比如上传图片时,为了省事把云存储的访问密钥直接写在前端代码里),等于把整个文件存储库公开送人。 二、那怎么办? 解决这个问题的方法非常简单:代码和密钥分离。 我们通常用环境变量来存储密钥。 什么是环境变量(Environment Variables)? 简单来说,环境变量是程序运行时才通过系统接口去读取的信息,它不直接写在代码里。 代码里只需要写上变量的名字(比如 process.env.OPENAI_API_KEY),至于这个名字背后具体的密钥是什么,则由程序运行时的环境(你的电脑操作系统、云服务器配置,或者本地的 .env 文件)来提供。这样一来,代码文件里就没有敏感信息了。 在本地开发时,我们通常使用一个名为 .env 的文件来管理这些环境变量。 为什么本地开发的时候不直接在系统里设置环境变量,而是要用 .env 文件? 因为如果你有多个项目,每个项目用不同的 API Key,直接在操作系统里配环境变量会非常混乱且容易冲突;而 .env 文件就放在当前项目根目录下,起到项目之间环境隔离的作用,还能方便查看和修改。 核心机制:.env 与 .gitignore 组合拳 1. .env 文件:专门用来放你的真实密钥(例如 OPENAI_API_KEY=sk-xxxx)。这个文件只停留在你自己的电脑或服务器上。 .env.example 文件:一个模版文件,里面只写结构不写真实 Key(例如 OPENAI_API_KEY=your_key_here),这个文件可以上传到 GitHub,方便别人或你自己以后参考。 .gitignore 文件:这相当于一份“禁止上传清单”。只要在里面写上一行 .env,Git 就会自动忽略它,再也不用担心误将密钥推送到网上。 三、AI 施工指南 AI 写代码时,如果你不在提示词里约束好,它可能就不会考虑这方面的问题。 ...