昨天打开 OpenAI API 后台的时候,我差点以为系统出 Bug 了。

账户余额显示:
-$125.66
第一反应是:
“我最近根本没怎么调用 API,怎么会欠费一百多美元?”
结果一查 Usage,发现事情远比想象中严重。

查看消费曲线后,我发现:
5 月 29 日出现第一波异常请求
6 月 5 日开始明显增长
6 月 6 日彻底爆发
短短几天时间:
Total Spend:$167.34
Total Tokens:13,048,668
Total Requests:2,563
对于我这种个人开发者来说,这个数字完全不正常。

进一步查看请求日志。
我发现大量请求都长这样:
“你是一位世界一流的图像描述大师……”
后面跟着数千字 Prompt。

任务内容几乎全部都是:
OCR识别
图片分析
图像描述
JSON结构化输出
更夸张的是,同一分钟内出现大量完全相同的请求。
正常用户不可能这样操作。
这明显是自动化脚本在批量执行任务。
目前我还无法100%确定泄露源头。
但根据我的排查结果,存在两个比较大的可能性。
我曾经在 AI 编程工具qoder中输入过 OpenAI API Key。
用户的提示词里面的key,后续qoder内部如何处理就不太清楚了。
这是我目前认为更值得警惕的风险。
很多独立开发者为了图方便,会把 OpenAI Key 直接写进 App:
OPENAI_API_KEY=sk-xxxx
或者:
Authorization: Bearer sk-xxxx
如果这样做:
Android APK 可以被反编译
iOS IPA 也可以被提取资源和字符串
攻击者完全有机会拿到真实 Key。
如果 Key 一旦暴露,无论应用本身是否加密、是否混淆,都无法阻止别人直接调用 OpenAI API。
因此我也不排除是 App 包中的 Key 被提取后遭到滥用。
很多开发者都有一个误区:
设置:
Monthly Budget = $20
就认为最多只会消费 20 美元。
实际上并不是这样。
预算更多是告警机制。
当大量请求同时进入系统时:
请求先执行
费用后统计
因此即使预算设置为 20 美元,也可能最终产生远超预算的费用。
我的账户就是这样一路从正常余额变成:
-$125.66
发现问题后,我第一时间:
撤销所有 API Key
停止相关服务
检查项目代码
排查 App 包
检查 AI 工具配置记录
导出 Usage 与 Billing 数据
向 OpenAI 提交账单申诉
目前正在等待官方审核结果。
不要把 OpenAI Key 放在前端。
不要把 OpenAI Key 打包进 App。
不要把 OpenAI Key 提交到 GitHub。
不要多个项目共用同一个 Key。
每个项目单独创建 Key。
定期轮换 Key。
开启 Usage 告警。
发现异常立即撤销所有 Key。
正确的做法永远是:
App
↓
你的后端
↓
OpenAI API
而不是:
App
↓
OpenAI API
因为只要 Key 出现在客户端,理论上就存在被提取的风险。
这次事故总共消耗了超过 1300 万 Tokens。
损失虽然不算特别大,但足以给我上一课。
截至目前,我仍在继续调查 Key 的真实泄露源头。
无论最终结果是 AI 工具配置问题、客户端反编译问题,还是其他我尚未发现的环节,有一点已经非常明确:
在 AI 时代,API Key 的重要程度已经和银行卡密码没有本质区别。
一旦泄露,损失发生的速度可能远超你的想象。
希望这次经历能给所有独立开发者提个醒。