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)有几个问题:
- API Key 暴露风险。前端代码里藏不住的,抓个包就看到了
- 没法做访问控制。谁调用了多少,你完全不知道
- 没法做缓存和限流。同一个请求反复调用,白烧钱
- 没法做日志审计。出问题了你不知道是谁、什么时候、干了什么
代理层解决的正是这些问题。
架构设计
最简单的代理架构:
“`
前端 → 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 分钟部署,零维护,全球加速。核心就三步:
- 创建一个 Workers 服务
- 把 API Key 放环境变量
- 前端改调你自己的域名
就这么简单。
记住一个原则:不要让用户的请求直接碰到你的 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
