AI 开发者必看:把 API Key 留在代码中,5 分钟被爬,一夜欠费上万
别让你的 API 密钥在代码里“裸奔”这是每个开发者都该有的安全意识。凌晨三点你被叮当作响的短信提示音吵醒。监控告警显示你的云服务账户在一小时内产生了数千美元的异常消费。你慌忙登录控制台发现一个陌生的 IP 正在疯狂调用你的大模型 API。翻看最近的代码提交记录一切都指向了那个被你随手写在config.js里的sk-xxx密钥——因为你把它连同代码一起 push 到了 GitHub 公共仓库被爬虫在几秒内抓取并利用了。这并非危言耸听而是每天都在发生的真实安全事件。把 API Key 写进代码无异于把家门钥匙藏在大门的锁孔上^_^。一、为什么“把 API Key 写进代码”是危险的版本控制系统无法隐藏秘密Git 的设计初衷是永久保留历史。即使你发现泄露后紧急删除并强制推送只要密钥曾经存在于任何一次 commit 中攻击者就能通过git reflog或直接克隆历史记录将其找回。内部威胁与意外暴露代码会在多个环节流动本地开发、同事审查、CI/CD 构建、容器镜像、日志输出。维护与轮换极其痛苦当密钥过期或需要更换时硬编码方式意味着你必须修改所有相关源文件然后重新构建、测试、部署。更可怕的是如果你在不同文件里重复定义了这个密钥例如同时出现在app.js和worker.js漏掉一个就是生产事故。合规性风险GDPR、PCI-DSS、等保2.0等法规明确要求敏感凭证不得以明文形式存储在代码仓库中。一旦审计发现轻则整改重则面临巨额罚款。二、环境变量是什么环境变量可以理解成程序启动前外部提前塞给它的一套“随身便签”。程序运行时完全不管便签是谁写的、从哪来的只要需要密钥或地址直接翻翻口袋看一眼就行。用环境变量来存 API Key说白了就是三大好处一套代码走遍天下代码只写一次到了不同的环境比如测试环境、线上环境只需要换掉口袋里的“便签内容”就行代码本身一个字都不用改。钥匙和锁彻底分开敏感的 API Key 只写在便签环境变量上而这个便签绝不放进代码仓库。哪怕你的代码被公开到 GitHub 上别人翻遍代码也找不到钥匙在哪。谁该看什么分得清清楚楚普通开发人员口袋里只有测试环境的钥匙线上生产环境的最高权限钥匙只攥在运维负责人手里。权限天然隔离谁也偷不到自己不该看的东西。三、如何在代码中正确使用环境变量如果你正在用 OpenAI、Claude、智谱、文心、通义千问、DeepSeek 等大模型的 API 开发应用那这一章就是给你量身定制的。因为你的 API Key 直接跟计费绑定——别人偷了你的 Key就等于拿着你的银行卡去随便刷。3.1 坏习惯教程怎么教你就怎么写很多 AI 入门教程为了省事会这样写# ❌ 千万别学这是教程写法不是生产写法fromopenaiimportOpenAI clientOpenAI(api_keysk-proj-abc123def456...# 明文写在代码里)或者更过分直接写在config.json里再import{openai_key:sk-proj-abc123def456...}后果是什么你把代码 push 到 GitHub 的那一刻就会有爬虫在几分钟内扫到这个 Key然后用你的额度去疯狂调用模型。半夜你睡着的时候账单已经多出了几千刀。3.2 好习惯从环境变量读取 Key正确的做法只有一句话代码里只写读取逻辑不写真实 Key。第一步在项目根目录创建.env文件记住这个文件永远不提交到 Git# .env OPENAI_API_KEYsk-proj-你的真实密钥第二步把.env加入.gitignore# .gitignore .env .env.local第三步在代码里从环境变量读取# ✅ 正确写法从环境变量读取importosfromopenaiimportOpenAI api_keyos.getenv(OPENAI_API_KEY)ifnotapi_key:raiseValueError(请设置环境变量 OPENAI_API_KEY)clientOpenAI(api_keyapi_key)或者更简洁一点因为 OpenAI 的 SDK 默认会自动读OPENAI_API_KEY这个环境变量# ✅ 更简洁SDK 自动读取环境变量fromopenaiimportOpenAI clientOpenAI()# 默认从环境变量 OPENAI_API_KEY 读取第四步创建一个.env.example模板文件这个可以提交到仓库供团队成员参考# .env.example —— 只写变量名不写真实值 OPENAI_API_KEYyour_api_key_here OPENAI_BASE_URLhttps://api.openai.com/v1 MODEL_NAMEgpt-4o3.3 主流 AI SDK 的环境变量写法速查不管你用哪家的大模型套路完全一样AI 服务环境变量名代码读取方式OpenAIOPENAI_API_KEYos.getenv(OPENAI_API_KEY)Anthropic ClaudeANTHROPIC_API_KEYos.getenv(ANTHROPIC_API_KEY)智谱 (Zhipu)ZHIPU_API_KEYos.getenv(ZHIPU_API_KEY)百度文心BAIDU_API_KEYBAIDU_SECRET_KEY分别读取两个环境变量阿里通义DASHSCOPE_API_KEYos.getenv(DASHSCOPE_API_KEY)DeepSeekDEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)通用公式你的 AI 服务商名 _ API_KEY全部大写下划线分隔。业界标准照做就行。3.4 如果你用的是 AI 编程助手Cursor / Copilot 等这些工具本身会帮你管理 Key但你写的应用代码里同样不能硬编码。尤其是你在 AI 助手的辅助下生成代码时一定要主动告诉它“请从环境变量读取 API Key不要硬编码。”一个好的 AI 编程助手会帮你生成类似这样的代码// AI 生成的正确代码Node.js 示例constapiKeyprocess.env.OPENAI_API_KEY;if(!apiKey)thrownewError(OPENAI_API_KEY is not set);而不是把 Key 直接写在源码里。你才是代码的最终负责人AI 写的每一行你都要过脑子。3.5 一个完整的 AI 调用示例Node.js OpenAI// app.js —— 完整的 AI 调用示例importdotenv/config;importOpenAIfromopenai;// 从环境变量读取constapiKeyprocess.env.OPENAI_API_KEY;constbaseURLprocess.env.OPENAI_BASE_URL||https://api.openai.com/v1;if(!apiKey){console.error(❌ 请设置环境变量 OPENAI_API_KEY);process.exit(1);}constclientnewOpenAI({apiKey,baseURL});asyncfunctionaskAI(prompt){constresponseawaitclient.chat.completions.create({model:process.env.MODEL_NAME||gpt-3.5-turbo,messages:[{role:user,content:prompt}],});returnresponse.choices[0].message.content;}// 调用askAI(Hello AI).then(console.log).catch(console.error);3.6 给 AI 开发者的额外忠告永远不要把sk-开头的 Key 写在任何代码文件里连注释里都不行。永远不要在日志里打印api_key的值调试完记得删掉console.log(api_key)。如果你用 Vercel / Netlify / 阿里云函数计算 部署 AI 应用去平台的控制台里设置环境变量不要在代码里写。定期轮换 Key各大 AI 平台都支持生成多个 API Key定期更换旧 Key 是良好习惯。如果怀疑 Key 泄露立即去官网后台删除旧 Key生成新 Key不要犹豫。四、动手演示重构一段“坏代码”重构前危险// config.jsexportconstconfig{apiKey:sk-abc123def456ghi789,// 硬编码dbPassword:admin123,};重构后安全// .env.example (提交到仓库)API_KEYyour_api_key_hereDB_PASSWORDyour_db_password_here// .env (本地开发已忽略)API_KEYsk-real-secretDB_PASSWORDreal-password// config.js (仅读取环境变量)exportconstconfig{apiKey:process.env.API_KEY,dbPassword:process.env.DB_PASSWORD,};// 启动验证if(!config.apiKey||!config.dbPassword){thrownewError(Missing required environment variables. Check your .env file.);}对比代码从“充满秘密”变成“干干净净”安全等级瞬间拉满。五、总结环境变量不是什么高深的技术它简单、成熟、有效是软件工程安全领域的基石之一。将 API Key 从代码中请出去不仅是对公司资产负责更是专业开发者的基本职业素养。从你正在写的下一个项目开始甚至从今天提交的这段代码开始把硬编码的密钥替换成process.env.KEY。别忘了随手创建的.env.example并提交能让团队协作更加顺畅。安全无小事编码需谨慎。如果这篇文章帮助你避免了一次潜在的泄露事故那么它便有了意义。

相关新闻

多策略盯盘哨兵 v3.1.1 顺势指标(CCI)策略、Webhook自定义模板与Windows系统托盘

多策略盯盘哨兵 v3.1.1 顺势指标(CCI)策略、Webhook自定义模板与Windows系统托盘

📌 版本概览 在过去的迭代中,我们收到了许多量化交易者与上班族朋友的深度反馈。历经 8 月份连续 30 余次高频打磨与测试,「股票量化多策略盯盘哨兵」正式迎来 v3.1.1 里程碑版本!本次更新重点上线了 顺势指标 (CCI) 策略与副图联…

2026/8/13 9:00:57 阅读更多 →
Qwen多模态工具层实战:从环境搭建到自定义工具调用

Qwen多模态工具层实战:从环境搭建到自定义工具调用

如果你最近在关注大模型和AI智能体的发展,可能会发现一个明显的瓶颈:很多模型“看起来”能力很强,能说会道,但一旦让它去操作一个真实世界的应用——比如帮你分析一张复杂的图表、编辑一份PDF文档,或者控制一个软件——…

2026/8/13 8:59:57 阅读更多 →
量子债务转移:技术债治理的创新思维与实践

量子债务转移:技术债治理的创新思维与实践

1. 量子债务转移:当技术债遇上平行宇宙理论 作为一名在软件测试行业摸爬滚打十二年的老兵,我见过太多团队被技术债务压垮的案例。直到某天深夜调试一个祖传屎山代码时,咖啡杯旁的量子物理科普视频突然给了我灵感——既然量子理论允许平行宇宙…

2026/8/13 8:59:57 阅读更多 →

最新新闻

LinkSwift:开源高效的网盘直链解析工具完整指南

LinkSwift:开源高效的网盘直链解析工具完整指南

LinkSwift:开源高效的网盘直链解析工具完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 /…

2026/8/13 9:50:47 阅读更多 →
Java LinkedList深度解析:从双向链表原理到实战场景选型

Java LinkedList深度解析:从双向链表原理到实战场景选型

1. 从“数组的烦恼”到链表的登场 如果你刚开始学Java,或者正准备面试,那“集合”这块内容肯定是绕不过去的。ArrayList和LinkedList这对“兄弟”,估计是面试官最喜欢拿来对比的问题之一了。我刚开始工作那会儿,也总被问得一愣一愣…

2026/8/13 9:50:47 阅读更多 →
ComfyUI-VideoHelperSuite完整指南:三步解决AI视频创作技术难题

ComfyUI-VideoHelperSuite完整指南:三步解决AI视频创作技术难题

ComfyUI-VideoHelperSuite完整指南:三步解决AI视频创作技术难题 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 核心关键词:ComfyUI视频插…

2026/8/13 9:50:47 阅读更多 →
2026年最新:选视频孪生公司必看这3个口碑标准

2026年最新:选视频孪生公司必看这3个口碑标准

做了5年视频孪生落地,踩过3次交付延期的坑,今天把2026年选视频孪生服务商的3个核心口碑标准说透,从底层算法、落地效率到售后响应全涵盖,还会拿真实项目实测数据做参考,帮大家避开虚标参数的坑。先吐槽下我踩过的坑我们…

2026/8/13 9:50:47 阅读更多 →
自己动手写一个tomcat之2拆分httpserver职责

自己动手写一个tomcat之2拆分httpserver职责

写在前面 源码 。 本文目标&#xff0c;使用标准的servlet&#xff0c;以及拆分httpserver职责。 1&#xff1a;使用标准的servlet 引入标准servlet的pom&#xff1a; <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api…

2026/8/13 9:50:47 阅读更多 →
深入拆解Trae-Agent评估架构:从原理到实战构建AI智能体进化引擎

深入拆解Trae-Agent评估架构:从原理到实战构建AI智能体进化引擎

1. 项目概述&#xff1a;为什么我们需要深入拆解Trae-Agent的评估架构&#xff1f; 最近在跟进一些开源AI Agent框架时&#xff0c;Trae-Agent这个名字出现的频率越来越高。作为一个旨在构建“可训练、可评估、可演进”的智能体框架&#xff0c;它的设计理念本身就很有意思。但…

2026/8/13 9:49:46 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者&#xff0c;或者正准备踏入这个领域&#xff0c;那么Visual Studio&#xff08;后面简称VS&#xff09;绝对是你绕不开的伙伴。但有时候&#xff0c;这个伙伴会跟你开一个不大不小的玩笑&#xff1a;你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南&#xff1a;RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑&#xff1a;baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码&#xff08;维护中 rm repo&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片&#xff1a;Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身&#xff0c;而应重视模型外的系统搭建&#xff0c;即Harness。提出AgentModelHarness的实用公式&#xff0c;详细介绍Harness的四个层次&#xff1a;持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →