用 Cursor、Bolt.new、Windsurf 或者 Claude Code 搭一个全栈应用或网页爬虫,现在花不到一小时。代码能编译,界面好看,本地跑起来一个语法错误都没有。然后你把它部署到生产环境,或者接上真实数据,事情立刻开始散架。
过去几个月里,在复盘了几十个由 AI 辅助生成的应用程序和自动化流水线之后,同样五个架构漏洞反复出现。它们不是语法层面的 bug——AI 生成的代码在语法上是合法的。它们是边界和失败模式上的 bug。在把真实用户或真实流量放上去之前,这五个修复项值得先过一遍。
一、客户端直查导致的 Supabase 数据泄露
AI 代码生成器很喜欢写客户端直查:用 Supabase 的 anon key 在浏览器里直接 from('organizations').select('*')。在浏览器里它跑得很顺。陷阱在于:如果行级安全(RLS)被关闭或者策略范围不对,这一行代码就等于让任何人在开发者工具里查询并下载你 Postgres 库里的每一家组织。
可以在 SQL 编辑器里跑这条测试查询:select tablename, rowsecurity from pg_tables where schemaname = 'public' and rowsecurity = false;。只要有表返回 false,立刻开启 RLS 并补上严格的用户隔离策略,比如用 auth.uid() = owner_id 限定只能读自己所属的组织。
二、未验签且不幂等的 Stripe Webhook
AI 脚手架生成的支付路由通常长这样:读 JSON body,判断 checkout.session.completed,然后发放高级权限,返回 ok。这里有两个大问题。
- 缺少签名验证:任何人都能伪造一个带合法 JSON 的 POST 请求,免费解锁付费功能。
- 重复处理:网络抖动时 Stripe 会重试事件。没有幂等控制,重复事件会让额度翻倍,或者重复触发引导流程。
修复方式是读取原始 body 缓冲区,用 Stripe 的签名密钥做验证,再配一张幂等日志表兜底——把事件 id 作为唯一约束插入 processed_events 表。
三、单引擎爬虫十秒内被标记
做线索生成或价格监控机器人时,很多人要么只用简单的 requests / httpx(遇到 JavaScript 单页应用直接失效),要么给每个页面都起一个重量级无头 Chrome(吃光 CPU 和内存)。另外,默认的 Playwright 或 Puppeteer 实例会暴露 navigator.webdriver = true,Sec-CH-UA 请求头也对不上,Cloudflare 会立刻拦截。
解法是双引擎架构:HTTPX 快速引擎处理静态页面、RSS 源和标准 HTML 目录,每分钟 200 次以上请求且没有无头开销;隐身 Playwright 无头引擎按需动态切换,用于 React/Next.js 动态页面,去掉 webdriver 标记,匹配视口尺寸和真实的 Chrome 128+ 用户代理,再加上随机化的人为抖动。
四、启动时用 Zod 校验环境变量
AI 代码经常内联读取环境变量,比如 process.env.DATABASE_URL!。如果 Vercel 或 Docker 环境里某个变量缺失或拼错,应用照样构建成功、正常启动,直到凌晨三点某个用户触发那条路由时才崩。
修复办法是强制一套严格 schema,在启动阶段就失败。用 Zod 定义对象:DATABASE_URL 必须是合法 URL,NEXT_PUBLIC_SUPABASE_URL 必须是合法 URL,SUPABASE_SERVICE_ROLE_KEY 长度至少 20,STRIPE_SECRET_KEY 必须以 sk_ 开头,然后对 process.env 执行 parse。
五、用 Agent 规则挡住幻觉式的 schema 漂移
用 Cursor、Claude Code 或 Windsurf 迭代代码库时,LLM 经常覆盖数据库迁移文件、改了 TypeScript 类型却不更新 SQL,或者凭空造出已废弃的库方法。可以在根目录建一个 .cursorrules 或 AGENT.md,把 AI 严格约束住:强制严格类型(不许用 any);禁止在没有对应迁移文件的情况下直接改数据库;要求所有服务端操作在调用数据库前先通过 Zod 校验输入。
这五处漏洞有个共同点:它们都不影响本地跑通,只在真实流量和真实数据面前暴露。AI 把脚手架的速度拉满之后,剩下的活恰恰是这些边界条件——而它们从来不是靠再生成一遍代码能补上的。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.