跳到内容

入门★★★★5 分钟阅读

什么是 API key?怎么用才不会外泄

API key 就是你连 OpenAI、Anthropic 这类付费服务的密码。外泄等于陌生人花你的钱 — 而且几乎每个人都至少漏过一次。

登入以收藏

API key 是一串长随机字符串,让你的 code 对付费服务验证身份。当你调用 OpenAI、Anthropic、Resend、Stripe 或任何现代 API,请求 header 会带 Authorization: Bearer sk-... — 那个 sk-... 就是 key。谁拿到谁就能用你的账号花钱,当信用卡号看待。

API key 到底是什么

机械上,就是一串长字符串(通常 40-100 字符),provider 产生,你 copy 进 app。这个 key:

  • 识别是哪个账号发 request(provider 才知道这笔钱算谁)
  • 通常带 scope / 权限(只读、完整、限定项目等)
  • 外泄时可以撤销、轮换

不同服务有不同前缀:

  • OpenAI:sk-proj-...(项目 key)或 sk-...(旧版 user key)
  • Anthropic:sk-ant-api03-...
  • Resend:re_...
  • Stripe:sk_live_...sk_test_...
  • Supabase:JWT 或 sbp_... PAT

前缀是给人看的提示,真正的秘密是整串。

怎么实际使用

基本流程:

  1. 进 provider 的 dashboard(platform.openai.comconsole.anthropic.com 等)
  2. 创建 API key,复制。通常只看得到一次 — provider 只存 hash,不存原文。
  3. 放进 app。绝对不要写死在 source code。
  4. 用 SDK(Python、TypeScript)或 raw HTTP 调用。

TypeScript 用 Anthropic 的最小示例:

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY, // 永远不要写死
});

const msg = await client.messages.create({
  model: "claude-sonnet-4",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello" }],
});

Key 放在环境变量 — process.env.ANTHROPIC_API_KEY — 开发时设在 .env.local,production 设在 hosting 的环境变量(Vercel、Render、Cloudflare 等)。

Key 是怎么外泄的

真实案例:

**Commit 到公开 repo。**你写死 key、commit、push 上 GitHub。Bot 几分钟内就会 scrape 新 commit,一小时内已经有人用你的模型跑他自己的工作流。代价:几百到几千美元,你还没发现。

**送进 client-side code。**你把 OPENAI_API_KEY 放进 Next.js 的 "use client" 文件、或 React Native bundle。谁都能打开浏览器 DevTools 看到。这就是个人 indie dev 一个周末损失 $5,000 的方式。

**截图贴出去。**你截了 terminal 显示环境变量的图,丢到 Discord 求救。这张图现在在某人的 screenshot 文件夹、然后是下一个 AI 爬虫的训练数据。

Slack 跟 email DM。「这是我的 API key,你看一下为什么跑不动?」你的 Slack 现在有它的索引。半年后 Slack workspace 被黑,key 跟着外泄。

怎么安全使用

四条规则挡掉 95% 的外泄。

**1. 永远不要把 key 放进 source code 或 client bundle。**开发永远 .env.local(gitignored),production 永远平台环境变量。服务器端才能存 — key 永远不该到用户的浏览器。

**2. .gitignore 加上 .env*。**第一次 commit 前再检查一次。万一不小心 commit 上去,光 rotate key 不够 — git history 还会泄露。用 git filter-repo 清。

**3. 用有 scope、有限额的 key。**OpenAI、Anthropic 跟大多数主流 API 都让你建受限 key:花费上限、项目限定、只读。开发千万不要用 master key — 开一个月上限 $5 的 dev key。漏了损失停在 $5。

**4. 在 dashboard 设花费警示跟上限。**OpenAI 可以设硬上限,Anthropic 同样。在你把 key 放进 app 之前就设好,不是等账单来才设。

Key 漏了怎么办

按这个顺序快速行动:

  1. **马上在 provider dashboard 撤销 key。**每分每秒都重要。
  2. **产新 key 换掉。**更新 .env.local 跟 hosting 平台。
  3. **看用量 log。**大多 provider 会显示近期 call,找你没做过的高峰。
  4. **如果有费用产生,联系客服。**大部分主流 provider 会把明显外泄的费用退掉,只要你动作快、故事清楚(commit hash、撤销截图等)。
  5. **检讨怎么漏的。**git?Client bundle?Slack?把流程修好,下周不要再来一次。

Server vs serverless 考量

现代 web app 里,「key 应该住哪」依 runtime 而定:

  • Server-rendered 页面、server action、API route(Next.js / Remix / SvelteKit):key 放环境变量,server-side 用。安全。
  • Client component、client fetch(浏览器 JS):永远不行。Key 会送到浏览器。如果浏览器需要跟 OpenAI 讲话,通过你自家 server 代转,加 auth。
  • Serverless function(Vercel、Cloudflare、AWS Lambda):同 server — 环境变量,绝不打包进 client code。
  • Mobile app(iOS、Android):放在 app 二进制的 key 用工具能挖出来。永远通过自己的 backend 代转。

规则:**如果用户能看到调用 API 的 code,他就能挖出 key。**据此规划。

什么时候不用太担心

如果你只是学习,用一个 $5 上限的测试 key 在自己笔记本,最坏情况是别人花掉你一杯咖啡的钱。不要因为安全焦虑就不敢实验。等到你 ship 给真实用户、或用真钱的 key,那时再紧起来。

延伸阅读

  • 什么是 LLM
  • 什么是 prompt injection、为什么危险
  • 怎么把 LLM API 账单砍半
  • 防 prompt injection:2026 年实际的护栏
  • LLM observability:logging、tracing、evals

最后更新: 2026-04-29

We use cookies

Anonymous analytics help us improve the site. You can opt out anytime. Learn more

什么是 API key?怎么用才不会外泄 · BuilderWorld