入门教程

API Key 安全指南:创建、保存、权限设置+泄露处理(2026 实测)

API Key 是什么、如何创建、5 个不能放的地方、密码管理器推荐、权限最小化配置、泄露后 4 步止损流程。含真实泄露案例损失 ¥3000 教训,2026-08 验证。

发布:2026年8月14日
更新:2026/8/16

开头

API Key 是访问 AI 服务的通行证,拿到它的人无需密码就能消耗你的余额。2025-2026 年已发生多起泄露案例,单次损失 ¥500-3000 不等。正确管理 API Key 包括:安全创建(只显示一次)、分场景隔离(不同应用用不同 Key)、限制权限(最小化原则)、定期轮换(3-6 个月)、泄露后 4 步止损。本文基于 2026 年 8 月真实案例,给出完整的创建、保存、防护和应急流程。

准备工作

API Key 命名规范对比 清晰的命名让 Key 更易管理

在开始前,你需要:

  1. 了解 API Key 的作用

    • 它是服务商识别你的凭证
    • 拿到 Key 的人可以直接调用 API
    • 不需要你的登录密码
  2. 准备工具

    • 密码管理器(如 1Password、Bitwarden)
    • 或安全的笔记软件(如 Obsidian + 加密库)
  3. 预计时间
    阅读本文 8 分钟,完成配置 15-20 分钟

<div class="mermaid-diagram">
flowchart LR
    A[创建] --> B[配置]
    B --> C[使用]
    C --> D[监控]
    D --> E{需要轮换?}

    E -->|是| F[创建新Key]
    E -->|否| D

    F --> G[更新应用]
    G --> H[验证]
    H --> I[废弃旧Key]

    I --> D

    C --> J{发现泄露?}
    J -->|是| K[紧急撤销]
    J -->|否| D

    K --> L[应急处理]
    L --> F

    style K fill:#ef4444
    style D fill:#10b981

API Key 生命周期管理

</div>

API Key 为什么必须保密

额度和权限设置 为不同用途的 Key 设置不同权限

API Key vs 登录密码

对比项登录密码API Key
用途登录网页后台直接调用 API
验证方式可能有验证码、2FA无额外验证
泄露后果需要密码才能扣费直接扣费,无需密码
修改密码后旧密码失效旧 Key 仍有效 ❗

重要结论:API Key 比登录密码更危险,因为它可以无验证直接扣费。

真实泄露案例

案例 1(2025-11):

  • 用户在 GitHub 公开仓库中提交了 .env 文件
  • 文件包含完整的 OpenAI API Key
  • 3 小时内被扫描脚本发现
  • 自动调用 GPT-4,生成垃圾内容
  • 损失 $420(约 ¥3000)
  • 用户醒来发现余额清零

案例 2(2026-03):

  • 用户在 QQ 群求助,截图中包含 API Key
  • 群成员复制了 Key
  • 2 天内消耗 ¥800
  • 服务商拒绝退款(用户责任)

案例 3(2026-06):

  • 开发者在前端代码中硬编码 API Key
  • 网站上线后,任何人查看源代码都能看到
  • 1 周内消耗 ¥1200
  • 发现时已无法追回

共同特征:

  • 都是无意泄露(不是被黑客攻击)
  • 都在短时间内造成大额损失
  • 都无法追回余额(服务商认定为用户责任)

API Key 的正确创建方式

Key 轮换流程图 定期轮换 API Key 的完整流程

第 1 步:登录服务商后台

操作:

  1. 访问服务商网站
  2. 登录账户
  3. 找到"API 管理"或"密钥管理"页面

第 2 步:创建密钥时填写信息

推荐配置:

配置项推荐值说明
密钥名称chatbox-desktop-2026清晰标识用途和时间
权限范围仅必要模型不要"全部权限"
使用额度每日 ¥50 或每月 ¥500按实际用量设置
过期时间6 个月定期轮换

错误示例:

  • ❌ 名称:我的密钥(无法区分用途)
  • ❌ 权限:全部模型(过度授权)
  • ❌ 额度:无限制(泄露损失无上限)
  • ❌ 过期:永不过期(风险累积)

第 3 步:保存密钥(只显示一次)

重要提醒:多数服务商的 API Key 只在创建时完整显示一次,刷新后只显示前后几位。

正确做法:

  1. 创建后立即复制完整 Key
  2. 粘贴到密码管理器
  3. 确认保存成功后再关闭页面

错误做法:

  • ❌ "我记住了,不用保存"(记不住的)
  • ❌ 保存到桌面 key.txt(不安全)
  • ❌ 截图保存到相册(可能云同步泄露)

第 4 步:验证密钥可用

操作:

  1. 在客户端或脚本中配置 Key
  2. 发送一条测试请求
  3. 检查账单确认扣费正确

不要把密钥放在这些地方

异常告警配置 配置用量异常告警

❌ 危险位置 1:公开聊天群/论坛

场景:

  • QQ 群、微信群、Discord 群求助
  • 截图中包含 API Key
  • 贴吧、知乎、Reddit 发帖

风险:

  • 任何人都能看到并复制
  • 聊天记录可能被搜索引擎收录
  • 群文件可能被转发

正确做法:

  • 截图前用马赛克遮挡 Key
  • 或用 sk-xxx...xxx 表示
  • 或完全不截图,只描述问题

❌ 危险位置 2:前端代码

场景:

// ❌ 错误示例
const apiKey = "sk-abc123def456...";
fetch("https://api.openai.com/v1/chat/completions", {
  headers: { "Authorization": `Bearer ${apiKey}` }
});

风险:

  • 任何访问网站的人都能查看源代码
  • 浏览器开发者工具(F12)→ 源代码 → 一目了然

正确做法:

  • API Key 只放在后端服务器
  • 前端调用自己的后端 API
  • 后端再调用 OpenAI/Claude
// ✅ 正确示例
fetch("/api/chat", {  // 调用自己的后端
  method: "POST",
  body: JSON.stringify({ message: "你好" })
});

// 后端代码(Node.js)
app.post("/api/chat", (req, res) => {
  const apiKey = process.env.OPENAI_API_KEY;  // 从环境变量读取
  // 调用 OpenAI API
});

❌ 危险位置 3:公开 GitHub 仓库

场景:

# .env 文件
OPENAI_API_KEY=sk-abc123def456...

提交到 GitHub 公开仓库后,全世界可见。

风险:

  • 自动扫描脚本每分钟扫描新提交
  • 发现 Key 后立即开始调用
  • 3 小时内余额可能清零

正确做法:

  1. 使用 .gitignore:
# .gitignore
.env
*.key
config.local.js
  1. 使用环境变量:
# 本地设置
export OPENAI_API_KEY="sk-abc123..."

# 代码中读取
const apiKey = process.env.OPENAI_API_KEY;
  1. 使用示例文件:
# .env.example(可以提交)
OPENAI_API_KEY=your_key_here

# .env(不提交,每个开发者自己填)
OPENAI_API_KEY=sk-abc123...
  1. 已经提交了怎么办?
    • 立即撤销该 Key
    • 生成新 Key
    • 从 Git 历史中彻底删除(见下文"泄露后处理")

❌ 危险位置 4:陌生的"检测网站"

场景:

  • 网上看到"API Key 有效性检测工具"
  • 输入 Key 后帮你"检测"

风险:

  • 这就是钓鱼网站
  • 你输入的 Key 会被记录
  • 可能立即被滥用

正确做法:

  • 只在官方后台管理 Key
  • 自己写脚本测试(见下文)
  • 不要用第三方工具

❌ 危险位置 5:无加密的笔记

场景:

  • Windows 记事本 key.txt
  • 微信收藏夹
  • QQ 空间日志
  • 印象笔记免费版(无加密)

风险:

  • 文件可能被误发送
  • 云同步可能泄露
  • 电脑丢失后无保护

正确做法(见下节)。

正确的保存方式

API 调用审计日志 定期检查 API 调用记录

方案 A:密码管理器(推荐)

推荐工具:

工具价格平台特点
1Password¥30/月全平台企业级安全,团队共享
Bitwarden免费/¥7月全平台开源,付费版支持 2FA
KeePassXC免费Win/Mac/Linux本地存储,无云同步

操作步骤(以 Bitwarden 为例):

  1. 安装 Bitwarden 浏览器插件
  2. 点击"添加项目" → 选择"API Key"
  3. 填写信息:
    • 名称:H API - ChatBox
    • 用户名:你的邮箱
    • 密码:sk-abc123...(完整 Key)
    • 备注:创建于 2026-08-14,每日限额 ¥50
  4. 保存

优点:

  • ✅ 强加密(AES-256)
  • ✅ 自动填充(浏览器插件)
  • ✅ 多设备同步
  • ✅ 可设置主密码

方案 B:环境变量(服务器/脚本)

操作步骤(Linux/Mac):

  1. 编辑 ~/.bashrc 或 ~/.zshrc:
export OPENAI_API_KEY="sk-abc123..."
export ANTHROPIC_API_KEY="sk-ant-456..."
  1. 重新加载:
source ~/.bashrc
  1. 在代码中读取:
import os
api_key = os.getenv("OPENAI_API_KEY")

操作步骤(Windows):

  1. 右键"此电脑" → 属性 → 高级系统设置
  2. 环境变量 → 用户变量 → 新建
  3. 变量名:OPENAI_API_KEY
  4. 变量值:sk-abc123...

优点:

  • ✅ 不在代码中出现
  • ✅ 不会提交到 Git
  • ✅ 易于切换(开发/生产)

方案 C:加密笔记(个人用户)

推荐工具:

工具价格加密方式
Obsidian + 加密插件免费本地 AES-256
Notion 数据库免费云端传输加密
OneNote免费分区密码保护

操作步骤(Obsidian):

  1. 安装"Encrypt" 插件
  2. 创建笔记 API Keys.md
  3. 写入内容后,右键 → Encrypt this note
  4. 设置加密密码
  5. 保存

优点:

  • ✅ 本地存储,无云同步风险
  • ✅ 加密保护
  • ✅ 免费

缺点:

  • ⚠️ 需要手动复制粘贴(无自动填充)
  • ⚠️ 忘记加密密码则无法恢复

权限分级矩阵

Key类型使用场景权限范围额度限制轮换周期
开发测试本地开发只读+测试模型¥10/天7天
生产环境线上服务所有模型¥500/天30天
CI/CD自动化测试测试模型¥20/天14天
数据分析离线任务批量API¥100/天30天
紧急备用故障恢复所有模型¥1000/天不轮换

一把密钥不要到处共用

分场景创建密钥

推荐方案:

场景密钥名称权限额度
ChatBox 桌面客户端chatbox-desktop-2026GPT-4/Claude每日 ¥50
Python 数据分析脚本script-data-analysisGPT-3.5每日 ¥20
VS Code Copilotvscode-copilot-2026GPT-4每日 ¥30
生产服务器prod-server-01全部模型每日 ¥500

好处:

  1. 泄露范围小
    某个设备丢失,只需撤销一把 Key

  2. 账单清晰
    每把 Key 的消耗单独显示,便于分析

  3. 权限最小化
    脚本只需要 GPT-3.5,就不给 GPT-4 权限

  4. 快速定位问题
    发现异常消耗,立即知道是哪个应用

权限最小化配置

示例(某服务商后台):

密钥名称:script-data-analysis
允许模型:
  ✅ GPT-3.5 Turbo
  ❌ GPT-4 Turbo(不需要,不勾选)
  ❌ Claude Opus(不需要,不勾选)
使用限制:
  每日上限:¥20
  每月上限:¥500
  单次最大 Tokens:4000
过期时间:2027-02-14(6 个月后)

原则:只给刚好够用的权限,不多给。

什么时候应该更换

强制更换场景

场景更换理由紧急程度
员工/合作方离开可能复制了 Key🔴 立即
电脑/手机丢失设备中可能有 Key🔴 立即
截图中出现 Key可能被他人看到🔴 立即
公开仓库出现 Key全世界可见🔴 立即
账单异常可能已被盗用🔴 立即
Key 已使用 6 个月定期轮换🟡 本周内

定期轮换策略

推荐频率:

  • 生产环境:每 3 个月
  • 个人使用:每 6 个月
  • 测试密钥:每 1 个月

操作流程:

  1. 创建新 Key
  2. 在所有客户端中替换为新 Key
  3. 测试新 Key 可用
  4. 撤销旧 Key
  5. 记录更换日期

提醒设置:

  • 在日历中设置提醒:每 3 个月
  • 或在密钥名称中包含到期时间:chatbox-2026-expires-2027-02

泄露后的 4 步处理流程

第 1 步:立即撤销密钥(1 分钟)

操作:

  1. 登录服务商后台
  2. 找到"API 管理"
  3. 点击泄露的 Key 旁边的"撤销"或"删除"
  4. 确认撤销

不要先做这些:

  • ❌ 先追查是谁用的(先止损)
  • ❌ 先改登录密码(改密码不影响 Key)
  • ❌ 先联系客服(可能回复慢)

第 2 步:检查账单和登录记录(5 分钟)

操作:

  1. 查看账单,记录异常消耗:
    • 时间范围
    • 消耗金额
    • 调用次数
    • 使用的模型
  2. 截图保存证据
  3. 导出详细账单(CSV/Excel)

查找线索:

  • 调用时间:凌晨 3 点(你在睡觉)= 被盗用
  • 调用频率:每秒 10 次(不是你的习惯)= 被盗用
  • 使用模型:GPT-4(你只用 GPT-3.5)= 被盗用

第 3 步:联系服务商(10 分钟)

工单模板:

标题:API Key 泄露,请求协助

内容:
您好,

我的 API Key 于 2026-08-15 14:30 泄露(在 GitHub 公开仓库中)。

已完成操作:
- ✅ 已撤销泄露的 Key(ID: sk-abc123...xyz,末四位 1234)
- ✅ 已创建新 Key 替换
- ✅ 已检查账单,发现异常消耗

异常消耗详情:
- 时间:2026-08-15 10:00 - 14:30
- 金额:¥380.00
- 调用次数:约 500 次
- 使用模型:GPT-4 Turbo

请求:
1. 确认该 Key 已完全失效
2. 请问是否可以退款异常消耗部分
3. 请协助检查账户是否有其他安全风险

附件:异常账单截图、GitHub 提交记录截图

感谢协助!

重要:

  • 多数服务商不会退款(用户责任)
  • 但仍应联系,留下记录
  • 部分服务商可能酌情补偿

第 4 步:更新所有客户端(20 分钟)

操作清单:

  • ChatBox:设置 → 服务商 → 更新 API Key
  • Python 脚本:修改 .env 文件
  • VS Code:设置 → 扩展 → 更新 Key
  • 生产服务器:更新环境变量,重启服务
  • 通知团队成员(如团队使用)

验证:

  • 每个客户端发送一条测试消息
  • 检查账单确认扣费正常

如何从 Git 历史中删除 Key

如果已经提交到 GitHub,仅删除文件不够,Git 历史中仍有记录。

方法 1:使用 BFG Repo-Cleaner(推荐)

# 1. 下载 BFG
wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar

# 2. 克隆仓库(裸库)
git clone --mirror https://github.com/你的用户名/你的仓库.git

# 3. 删除包含 Key 的文件
java -jar bfg-1.14.0.jar --delete-files .env 你的仓库.git

# 4. 清理
cd 你的仓库.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive

# 5. 强制推送(⚠️ 会覆盖远程历史)
git push --force

方法 2:使用 git filter-branch

git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch .env" \
  --prune-empty --tag-name-filter cat -- --all

git push --force --all

重要提醒:

  • 这会重写 Git 历史,团队成员需要重新克隆仓库
  • 如果仓库已被 fork,fork 中仍有 Key
  • 即使删除历史,Key 仍应撤销(可能已被扫描)

存储方案对比

方案安全性便利性成本适用场景
❌ 硬编码极低高免费永不使用
⚠️ 配置文件低高免费仅本地开发
✅ 环境变量中高免费个人项目
✅ .env + .gitignore中高高免费小团队
⭐ 密钥管理服务高中¥50+/月商业项目
⭐ HashiCorp Vault极高低¥200+/月企业级

常见问题

Q1:修改登录密码后,旧 API Key 会失效吗?

A:❌ 不会

API Key 和登录密码是独立的。修改密码后:

  • ✅ 旧密码失效,无法登录后台
  • ❌ 旧 API Key 仍然有效,仍可调用 API

正确做法:必须在后台手动撤销 Key。

Q2:能看到 API Key 被谁用了吗?

A:⚠️ 部分服务商可以

  • 优质服务商:账单显示 IP 地址、User-Agent
  • 劣质服务商:只显示总消耗,无详细日志

建议:选择有详细日志的服务商。

Q3:多人团队如何共享 API Key?

A:不要直接共享 Key

推荐方案:

方案适用场景
密码管理器团队版小团队(<10 人)
环境变量 + 堡垒机中型团队(10-50 人)
统一 API 网关大型团队(>50 人)

1Password 团队版示例:

  • 创建团队保险库
  • 将 API Key 保存到保险库
  • 为成员分配访问权限
  • 成员离职时移除权限

Q4:免费的密码管理器安全吗?

A:✅ 开源的可以信任

工具是否开源安全性
Bitwarden✅ 是高(可审计代码)
KeePassXC✅ 是高(本地存储)
1Password❌ 否高(企业级,但闭源)
Chrome 内置❌ 否中(不加密,存浏览器)

建议:

  • 个人用户:Bitwarden 免费版
  • 企业用户:1Password 团队版

费用说明

  • 阅读本文:免费
  • 密码管理器:
    • Bitwarden 免费版:¥0
    • 1Password:¥30/月
    • KeePassXC:¥0
  • API Key 创建:免费
  • 泄露损失(案例平均):¥500-3000

预防成本 vs 泄露损失:

  • 预防:¥0-360/年(密码管理器)
  • 泄露:¥500-3000/次

安全提醒

  1. API Key 只显示一次
    创建后立即保存,刷新后无法再看到完整 Key

  2. 分场景创建密钥
    不同应用用不同 Key,泄露时损失小

  3. 限制权限和额度
    只给必要权限,设置每日/每月上限

  4. 定期轮换
    每 3-6 个月更换一次

  5. 泄露立即撤销
    发现泄露后第一时间撤销,不要犹豫


更新日期: 2026-08-14
参考案例: 2025-2026 年 10+ 起真实泄露事件
工具测试: 1Password、Bitwarden、KeePassXC

相关阅读:

标签:API Key账号安全密钥管理
API Key 安全指南:创建、保存、权限设置+泄露处理(2026 实测) - API选