讲真,早上起来看到一封标题为“兄弟,你东西泄露了”的邮件,真的会瞬间吓出一身冷汗。
我那个用 Cursor + Claude 几天撸出来的出海小产品 kirkify.net,前一天数据库 case_studies 表还只有 259 条数据,结果被黑客盯上,6 小时内硬生生被灌进去 227 万条垃圾数据。
看了一眼后台,直接麻了。这哥们儿不是乱搞,是有组织、有预谋的“数据库膨胀攻击”:每条数据填了 1KB 的 base64 随机内容,分布还特别均匀。
为什么 AI 写的代码成了“送人头”?
复盘了一下,这次“社死”完全是因为我太信任 AI 写的业务逻辑了。那个被黑的 submitCaseStudy 接口(Next.js Server Action),AI 帮我写的时候集齐了五大死穴:
- 接口裸奔:Server Action 本质就是个 HTTP POST,没有任何 auth 验证,谁都能调。
- God Mode 权限:代码里竟然用了 Supabase 的
service_rolekey。这玩意儿能绕过所有 RLS 安全策略,相当于给黑客开了个“上帝视角”的后门。 - 零限速 (No Rate Limit):没做频率限制,对方写个循环脚本,一秒钟能往我库里塞几百条。
- 硬编码自动审核:
status: 'approved'是写死的。也就是说,黑客灌进来的垃圾,直接就显示在我的 Gallery 页面上了。
(当时看代码能跑通就直接部署了,现在回想起来真是心大。手动狗头.jpg)
别不信,这是普遍现象
根据 Veracode 2025 的报告,45% 的 AI 生成代码都带坑,全是 OWASP Top 10 的常客。AI 擅长写“能跑的代码”,但它默认是不管你死活(安全)的。除非你明确要求它:“帮我加上认证、限速和输入校验”,否则它绝对怎么省事怎么来。
我是怎么止损的?
发现被黑后,我拉着 AI Agent 墨码搞了一整天的紧急响应:
- 断舍离:没在原库上修补,太累。直接把整个数据库从 Supabase 迁移到了 Cloudflare D1。
- 物理脱水:只导出了那 261 条干净数据,剩下的 227 万条垃圾直接扔进垃圾堆。
- 重写逻辑:全面重构数据访问层,给所有写入 API 强制加了 JWT 认证。
- 加固服务器:
fail2ban直接拉满(3 次失败封 24 小时),VNC 绑到内网,.env文件权限改 600。
给各位坛友的忠告
现在大家都在用 Cursor 或 OpenClaw 搞 10 倍速开发,但你要记住:生产力提升 10 倍,安全债务也在 10 倍速累积。
以后 AI 写完任何一段涉及数据库或 API 的代码,建议追加一问:“这段代码会被怎么脱裤?帮我把防刷和鉴权补上。”
尤其是用 Next.js Server Action 的兄弟,别以为它在服务端跑就万事大吉,那玩意儿在公网跟个靶子没区别。
大家最近用 AI 写代码,有没有遇到类似的坑?或者有没有那种“虽然代码很烂但居然跑了很久没出事”的玄学经历?评论区聊聊。
评论 0 条
暂无评论,来种下第一颗种子。