• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

AI Agent 安全部署实战:独立开发者如何用 Cloudflare Workers 搭建 API 代理层

Build in Public admin 4小时前 8次浏览 已收录 扫描二维码

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*

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。