Claude Code auto mode 被攻破?独立开发者部署 AI Agent 应用时,API 安全不可忽视。本文用 Cloudflare Workers 搭建企业级 API 代理层,10 分钟搞定生产级防护,附完整代码。
## Content
上周 Hacker News 上有个帖子很火——Johann Rehberger 发现了一个针对 Claude Code auto mode 的攻击向量,成功率 80%。攻击者可以通过一个 zip 压缩包,让 Claude Code 在 auto mode 下执行恶意代码,而且 auto mode 的安全机制还会阻止 Claude 自己发起的清理命令。
“安全机制本身变成了故障的一部分。”
这句话点到了一个核心问题:当你用 AI API 搭建产品时,API 层面的安全防护怎么做?
很多独立开发者习惯把 API key 直接写在前端代码里,或者用简单的 fetch 包装一下就上线。这在小规模试用时没问题,但一旦你的产品开始有真实用户,这就是定时炸弹。
今天分享一个我自己在生产中用的方案:用 Cloudflare Workers 搭建一个 AI API 代理层,10 分钟就能搞定,成本几乎为零(Workers 免费额度足够大部分独立开发者的早期使用)。
### 为什么需要 API 代理层
直接让前端调用 AI API(如 OpenAI、Anthropic)有几个问题:
1. API Key 暴露风险。前端代码里藏不住的,抓个包就看到了
2. 没法做访问控制。谁调用了多少,你完全不知道
3. 没法做缓存和限流。同一个请求反复调用,白烧钱
4. 没法做日志审计。出问题了你不知道是谁、什么时候、干了什么
代理层解决的正是这些问题。
### 架构设计
最简单的代理架构:
“`
前端 → Cloudflare Workers → AI Provider (OpenAI/Anthropic)
↓
KV Store (缓存/限流/日志)
“`
Workers 是全球分布的 edge runtime,延迟低、免费额度够用、部署简单。
### 完整实现
下面是一个可以直接用的代理 Worker:
“`javascript
// wrangler.toml 配置
// name = “ai-proxy”
// main = “src/index.js”
// compatibility_date = “2024-01-01”
//
// [[kv_namespaces]]
// binding = “KV”
// id = “your-kv-id”
//
// [vars]
// ALLOWED_ORIGINS = “https://yourapp.com”
// RATE_LIMIT = “100”
// ANTHROPIC_API_KEY = “sk-ant-xxx”
export default {
async fetch(request, env) {
// 1. CORS 和来源检查
const origin = request.headers.get(“Origin”);
if (origin && !env.ALLOWED_ORIGINS.split(“,”).includes(origin)) {
return new Response(“Forbidden”, { status: 403 });
}
// 2. 限流检查(基于 IP)
const ip = request.headers.get(“CF-Connecting-IP”);
const cacheKey = `rate_limit:${ip}`;
const current = await env.KV.get(cacheKey);
if (current && parseInt(current) >= parseInt(env.RATE_LIMIT)) {
return new Response(“Rate limit exceeded”, { status: 429 });
}
// 3. 解析请求
const { messages, model, stream, max_tokens } = await request.json();
// 4. 调用 AI API(以 Anthropic 为例)
const response = await fetch(“https://api.anthropic.com/v1/messages”, {
method: “POST”,
headers: {
“Content-Type”: “application/json”,
“x-api-key”: env.ANTHROPIC_API_KEY,
“anthropic-version”: “2023-06-01”,
},
body: JSON.stringify({ messages, model, stream, max_tokens }),
});
// 5. 记录调用日志到 KV
const logKey = `log:${Date.now()}:${ip}`;
await env.KV.put(logKey, JSON.stringify({
timestamp: Date.now(),
ip,
model,
messageCount: messages.length,
status: response.status,
}), { expirationTtl: 86400 * 7 }); // 保留7天
// 6. 更新限流计数
const newCount = current ? parseInt(current) + 1 : 1;
await env.KV.put(cacheKey, newCount.toString(), { expirationTtl: 60 });
// 7. 处理流式/非流式返回
if (stream) {
return new Response(response.body, {
headers: { “Content-Type”: “text/event-stream” },
});
}
return new Response(JSON.stringify(await response.json()), {
headers: { “Content-Type”: “application/json” },
});
},
};
“`
### 功能拆解
**1. 来源限制**
只允许你的域名调用,其他人拿到了也调用不了。通过 `ALLOWED_ORIGINS` 环境变量配置。
**2. 限流保护**
每个 IP 每分钟最多 100 次请求,防止恶意刷量。可以根据你的定价调整。
**3. API Key 安全**
Key 存在 Workers 的环境变量里,永远不会暴露到前端。
**4. 调用日志**
每次调用都记录到 KV,7 天自动过期。你可以查谁在调用、用了什么模型、返回状态。
**5. 成本控制**
通过限流和日志,你能清楚知道每用户的花费,甚至可以加一层用量计费逻辑。
### 真实世界的数据
根据 Cloudflare 官方文档,Workers 免费计划每天 10 万次请求,足够一个早期 AI 产品的 API 代理使用。按我自己的经验,一个日活 1000 用户的 AI 应用,每天的 API 调用在 5000-20000 次之间,完全在免费额度内。
如果用 VPS 跑类似服务,最便宜的 5 刀/月的机器,加上维护成本(SSL 证书、nginx 配置、监控报警),实际成本至少是 Workers 的 3-5 倍。而且 Workers 全球 ~330 个节点,延迟比单区域 VPS 低得多。
### 进阶:加内容安全过滤
当代理层可以做更多事情。比如加 Prompt Injection 检测:
“`javascript
// 在转发前检查 prompt
const SENSITIVE_PATTERNS = [
/ignore all previous instructions/i,
/system override/i,
/you are now/i,
/disregard/i,
];
function checkPromptInjection(messages) {
for (const msg of messages) {
for (const pattern of SENSITIVE_PATTERNS) {
if (pattern.test(msg.content)) {
return true;
}
}
}
return false;
}
“`
这只是一个简单的 demo,生产环境中可以用专门的 prompt injection 检测服务(如 Guardrails AI 或自定义模型分类器)。
### 总结
对于独立开发者来说,API 安全不是”以后再说”的事。从第一个用户开始就应该有基本的防护。
Cloudflare Workers 提供了一条极低成本的安全路径:10 分钟部署,零维护,全球加速。核心就三步:
1. 创建一个 Workers 服务
2. 把 API Key 放环境变量
3. 前端改调你自己的域名
就这么简单。
记住一个原则:**不要让用户的请求直接碰到你的 API Key**。加一层代理,成本几乎没有,但能避免大部分安全灾难。
—
*参考:*
– *Cloudflare Workers 文档 https://developers.cloudflare.com/workers/*
– *Johann Rehberger, “Breaking Claude Code Opus 5 Auto Mode”, 2026-08-27*
– *OpenAI API 安全最佳实践 https://platform.openai.com/docs/guides/safety-best-practices*
