密钥与配置:一次泄露,余额是全世界的
三条铁律 + 一个能装进 pre-commit 的扫描脚本
这一节不省钱,但能救命。
GitHub 上每天都有人把 API key 连着代码推上去。平均多久被扫到并盗用?——分钟级。有自动化爬虫 24 小时盯着新提交,专捞密钥。你睡一觉起来,余额清零、账单爆表,还可能被拿去干违规的事(用的是你的名义)。
这一节给你三条铁律、一个能装进提交钩子的扫描脚本,以及最重要的:万一泄露了,第一步该干什么。
API key 是你家的钥匙,不是"账号名"。把它写进代码推上 GitHub,等于把钥匙贴在小区门口的公告栏上——不是"可能有人拿",是"专门有人每天来抄"。而且你改代码删掉它也没用:公告栏的旧照片(Git 历史)还在。
三条铁律
铁律一:key 只走环境变量,代码里一个字符都不能有。
# ❌ 死刑
KEY = "sk-abc123realkey..."
# ✅ 正确
KEY = os.environ["DEEPSEEK_API_KEY"] # 取不到就直接崩,比默默用错更好
铁律二:.env 必须进 .gitignore,而且 .gitignore 本身要提交。
本地用 .env 存 key 很方便,但它一旦被提交就等于写进代码。检查一次:git check-ignore .env 有输出 = 已忽略。
铁律三:前端永远不能有 key。 浏览器里的一切用户都能看到——F12 就能翻出来。需要调模型?必须由你的后端代理(AP7 会做)。任何"前端直连大模型 API"的教程,都是在教你烧自己的钱。
万一泄露了:三步应急(顺序不能错)
第一步永远是"作废旧 key",不是"改代码"。
- 立刻去服务商后台作废这个 key——只要它还有效,删代码、改历史都是无用功;
- 创建新 key,走环境变量重新配置;
- 查用量与账单:看有没有异常调用(不是你的时段/量级),有就联系服务商。
特别提醒:改代码 + 强推覆盖历史 ≠ 安全。Git 历史可能已被 fork、被缓存、被爬虫抓走。唯一可靠的止损是作废那把钥匙。
一个能装进提交钩子的扫描脚本
本节代码 secret_scan.py 是纯本地静态扫描(不联网、不上传),覆盖常见密钥形态:sk-、sk-ant-、AIza、AKIA,以及 api_key = "..." 这类赋值写法,并自动排除 your_key/xxx/example 这类占位符。
本课自己的课程目录扫描结果:
扫描目录:/…/课程-AI应用专业版
✅ 未发现硬编码密钥。保持住:key 永远走环境变量。
进阶用法(主课学过 hooks 的同学直接上手):把它挂到 Git 的 pre-commit 钩子里,扫到就阻止提交——让"不可能提交密钥"变成机器保证,而不是靠你记得。
🔧 动手做:给你的项目上锁(10 分钟)
- 跑
python3 secret_scan.py 你的项目目录——扫你自己所有正在写的项目,不只是这门课的。 - 有命中?先去作废那个 key(别先改代码),再按三步应急走完。
- 检查
.gitignore:git check-ignore .env有输出吗?没有就现在加。 - 装钩子:在项目的
.git/hooks/pre-commit里调用这个脚本,扫到密钥就exit 1(不会写?把这句需求发给 AI,它两分钟给你)。 - 验证钩子有效:故意在一个测试文件里写一行假 key(比如
sk-加 20 个字符),git commit试试——应该被拦下。然后删掉测试文件。
✅ 做到这里你应该有:一次全项目扫描结果 + 一个会拦截密钥的提交钩子 + 记住"泄露先作废"这个顺序。
为什么:这是全课唯一一节"学了可能永远用不上,但用上一次就值回整门课学费" 的内容。密钥事故的特点是:发生前你觉得不可能,发生后你希望时间倒流。机器保证 > 人的自觉——装上钩子,这事就再也不用靠记性了。
密钥只是最扎眼的一类。同样不能提交的还有:数据库连接串(含密码)、用户数据样本(哪怕只是"几条测试数据"——里面可能有真实手机号)、内部文档/客户名单、生产环境配置。一个简单的判断:"这个文件如果出现在陌生人的电脑里,我会不会慌?"——会,就别提交。AP6 讲数据安全时会把这条展开成完整的分级。
我想在 Git 的 pre-commit 钩子里自动扫描密钥:扫到 sk-/AIza/AKIA 开头的字符串或 api_key 赋值这类写法就阻止提交并打印文件名和行号,同时排除 your_key/example/xxx 这类占位符。请给我完整的钩子脚本和安装步骤(我的项目是【语言/框架】)。
密钥三铁律:只走环境变量、.env 进 .gitignore、前端绝不放 key;泄露三步:作废 → 换新 → 查账单(顺序不能错);把扫描装进 pre-commit,让机器替你记。
AP1 最后一节把前面五节串起来:给每次调用装电表——记 token、算钱、按用户和功能归集。它是 AP7 额度系统和监控的地基。
🔎 来源与核验· 2 条,点开核对
