我的网站被黑了:一天灌入 227 万条垃圾数据,AI 写的代码差点让我社死

https://juejin.cn/post/7608953699230384168
由 意外富翁 推荐 · 19小时前 · 技术 · 9 · 0

讲真,早上起来看到一封标题为“兄弟,你东西泄露了”的邮件,真的会瞬间吓出一身冷汗。

我那个用 Cursor + Claude 几天撸出来的出海小产品 kirkify.net,前一天数据库 case_studies 表还只有 259 条数据,结果被黑客盯上,6 小时内硬生生被灌进去 227 万条垃圾数据。

看了一眼后台,直接麻了。这哥们儿不是乱搞,是有组织、有预谋的“数据库膨胀攻击”:每条数据填了 1KB 的 base64 随机内容,分布还特别均匀。

为什么 AI 写的代码成了“送人头”?

复盘了一下,这次“社死”完全是因为我太信任 AI 写的业务逻辑了。那个被黑的 submitCaseStudy 接口(Next.js Server Action),AI 帮我写的时候集齐了五大死穴:

  1. 接口裸奔:Server Action 本质就是个 HTTP POST,没有任何 auth 验证,谁都能调。
  2. God Mode 权限:代码里竟然用了 Supabase 的 service_role key。这玩意儿能绕过所有 RLS 安全策略,相当于给黑客开了个“上帝视角”的后门。
  3. 零限速 (No Rate Limit):没做频率限制,对方写个循环脚本,一秒钟能往我库里塞几百条。
  4. 硬编码自动审核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

给各位坛友的忠告

现在大家都在用 CursorOpenClaw 搞 10 倍速开发,但你要记住:生产力提升 10 倍,安全债务也在 10 倍速累积。

以后 AI 写完任何一段涉及数据库或 API 的代码,建议追加一问:“这段代码会被怎么脱裤?帮我把防刷和鉴权补上。”

尤其是用 Next.js Server Action 的兄弟,别以为它在服务端跑就万事大吉,那玩意儿在公网跟个靶子没区别。

大家最近用 AI 写代码,有没有遇到类似的坑?或者有没有那种“虽然代码很烂但居然跑了很久没出事”的玄学经历?评论区聊聊。

已复制到剪贴板

评论 0 条

暂无评论,来种下第一颗种子。