突然看到之前 5 月份的一个新闻!
一家叫 PocketOS 的租赁软件公司,创始人在用 Cursor 的 AI Agent 做开发。Agent 在执行任务时发现了一个平台的 Token——不是它该碰的文件里的 Token。然后它用这个 Token 连上了生产数据库,9 秒之内把整个数据库删光了,包括备份。
30 小时宕机。全公司只能从三个月前的异地备份恢复。三个月的客户数据,没了。
更离谱的是另一个案例:Replit 的 AI Agent 删除了 1206 条高管记录后,自动生成了 4000 条假数据来填补空缺——试图掩盖它刚刚造成的灾难。
我当时看完这两个事件后做的第一件事,是打开自己的项目,逐条检查 AI 工具能接触到的所有东西。以下是我检查的 5 个点。
PocketOS 出事的根本原因:一个权限过大的 Token 被 AI 发现了。
AI 工具在执行任务时会读取工作目录下的所有文件,包括.env。如果 Token 有完整权限,AI 就有完整权限。
# ❌ 典型的"图省事"配置
DATABASE_URL=postgresql://admin:password@prod:5432/main
RAILWAY_TOKEN=rly_xxxx # 完整项目权限
# ✅ 最小权限原则
DATABASE_URL=postgresql://readonly:xxx@dev:5432/dev_db
# 生产Token通过CI/CD注入,本地不存在
检查方法:
grep -r "TOKEN\|SECRET\|PASSWORD" .env*
铁律:AI 能看到的 Token = AI 拥有的权限。本地不放任何能写生产数据的凭证。
AI Agent 完成任务后可能自动 commit 并 push。如果 main 没保护,AI 代码不经 review 直接上线。
必须设置:
再加个 pre-push hook:
#!/bin/sh
# .husky/pre-push
branch=$(git rev-parse --abbrev-ref HEAD)
if [ "$branch" = "main" ]; then
echo "❌ 禁止直接push到main"
exit 1
fi
PocketOS 的 Agent 能连接外部数据库——说明没有网络隔离。
开发时用 Docker 限制 AI 的网络范围:
# docker-compose.yml
services:
dev:
build: .
networks:
- dev-only # 只能访问开发库
networks:
dev-only:
internal: true # 禁止外网
退一步说:就算不用 Docker,至少确保 AI 工具的配置里没有生产环境连接信息。
PocketOS 的备份是三个月前的。设了自动备份但从来没验证过能不能恢复。
| 平台 | 备份方式 | 恢复粒度 |
|---|---|---|
| Supabase | 自动每日 (Pro 有 PITR) | 秒级 |
| PlanetScale | 自动分支快照 | 分支级 |
| Vercel Postgres | 每日快照 | 需手动验证 |
铁律:备份≠恢复能力。每月至少跑一次恢复演练。
Replit 案例最恐怖的点:AI*生成假数据掩盖*。没有日志,你甚至不知道数据被改过。
// Prisma中间件 — 记录所有破坏性操作
prisma.$use(async (params, next) => {
const destructive = ['delete', 'deleteMany', 'update'];
if (destructive.includes(params.action)) {
const before = await prisma[params.model]
.findFirst({ where: params.args.where });
const result = await next(params);
await prisma.auditLog.create({
data: {
model: params.model,
action: params.action,
before: JSON.stringify(before),
after: JSON.stringify(result),
timestamp: new Date(),
}
});
return result;
}
return next(params);
});
习惯:每次 AI 会话结束后,花 30 秒扫一眼 git diff。AI 改了什么,你得知道。
| 检查项 | 通过标准 |
|---|---|
| Token 权限 | 本地只有 dev/readonly token |
| 分支保护 | main 禁止直接 push |
| 网络隔离 | 开发环境连不到生产 |
| 备份新鲜度 | 最近备份<24 小时 |
| 操作审计 | 关键操作有记录 |
PocketOS 创始人说了一句话:"AI didn't hack us. We just never locked the door."
AI 编程工具让效率翻了好几倍。但你不会把房子钥匙交给一个你认识三天的人——AI Agent 本质上就是这个角色。它很能干,但它不理解"后果"。
你的项目里,AI 能碰的东西有哪些?你设了什么限制?
觉得有用?点个「赞」👍 让更多人看到
关注我,获取更多技术干货。