我们专门审计使用 Lovable、Bolt、v0、Cursor、Claude Code、Codex、ZCode 等 AI 编程智能体构建的应用。相同的缺陷总是一再出现——以下是完整清单、自行发现每个问题的方法,以及对应的修复思路。
咨询早期试用复核 →严重风险。任何无聊的机器人或陌生人发现后,都能在几分钟内利用这些问题。
浏览器打包文件里任何可读取的 sk-...,都会在部署后几分钟内被机器人盗取。你还没注意到,OpenAI 的账单就已经来了。
发现方法:查看页面源代码或开发者工具,在已部署站点中搜索 sk-。修复:把调用移到服务端,并轮换密钥。
service_role 密钥。该密钥可以绕过所有行级安全策略。如果它出现在客户端代码里,就等于给每位访客授予了数据库管理员权限。
发现方法:在打包文件中搜索 service_role,或查找载荷中含 "role":"service_role" 的 JWT。修复:绝不发送到客户端;改用 anon 密钥配合 RLS。
只有 CREATE TABLE 而没有 ENABLE ROW LEVEL SECURITY,意味着任何拥有 anon 密钥(它本来就是公开的)的人,都能读取、编辑和删除每一行数据,包括其他用户的数据。这是 Lovable/Bolt 应用中最常见的单一泄露原因。
发现方法:进入 Supabase 控制面板 → 表编辑器,每张表都应显示“RLS enabled”。修复:启用 RLS,并添加按用户隔离的策略。
攻击者可借此发起退款并操纵你的账户。
发现方法:在打包文件中搜索 sk_live_ 或 rk_live_。修复:仅在服务端使用,并在 Stripe 控制面板轮换密钥。
.env 提交到了代码仓库。一旦推送到 GitHub——哪怕现在是私有仓库,以后可能转为公开,或被承包商克隆——所有机密信息都会随代码一同流出。
发现方法:仓库中是否包含真实的 .env 文件?修复:从 Git 历史中彻底清除,轮换全部密钥,并加入 .gitignore。
高风险。不会发生戏剧性的入侵,只会造成缓慢而昂贵的损失。
只存在于 Supabase 控制面板中的规则无法接受代码评审,并可能在重新导入时悄无声息地丢失。
发现方法:你的 supabase/migrations/*.sql 中是否包含策略,还是只在控制面板里点选配置?修复:将策略导出为迁移文件。
隐藏按钮并不等于访问控制;底层 API 必须验证角色。否则任何人都能直接调用你的管理 API。
发现方法:退出登录后直接请求管理 API 端点。它是否仍有响应?修复:在服务端检查角色。
一段循环脚本就能在你睡觉时烧光 LLM 预算,或暴力破解登录。
发现方法:在服务端代码中搜索任何速率限制器;如果没有找到,那就是没有。修复:对 /auth 和 AI 路由实施按 IP 限流。
现成的攻击代码随手可得,攻击者无需任何技术能力。
发现方法:在项目中运行 npm audit。修复:升级被标记的软件包。
中低风险。访客在愿意注册之前,就能直接感受到的那些问题。
没有 CSP、没有 HSTS、页面可被嵌入 iframe——这些都会让小漏洞升级为真正的攻击。
发现方法:把网址粘贴到 securityheaders.com。修复:在边缘层添加标准安全响应头。
首字节时间超过约 3 秒,访客会在应用加载前离开。
发现方法:开发者工具 → 网络 → 停用缓存 → 重新加载,查看第一个请求的 TTFB。修复:使用边缘缓存或更轻量的托管方案。
这是让首次访问者最快失去信任的方式。
发现方法:用手机点击着陆页和主要流程中的每个链接。修复:顾名思义,逐一修正即可。
浏览器就是唯一需要的工具。如果任何一步发现了问题,就值得进行一次真正的审计。
sk-、service_role、_live_。只要命中任何一项,就立刻停下来并在今天轮换该密钥。api.openai.com(或 Anthropic/Google)?这意味着密钥暴露,账单也没有限流保护。.env 文件?是否存在一个 .admin 路由,让你在退出登录后输入网址仍能访问?全部正常?你已经领先于大多数氛围编程应用。发现任何红灯?这正是我们每天解决的问题。
我们的扫描器会自动检查它能够观察到的代码仓库、部署包和受限公开站点,并在报告中标明 coverage 状态。控制台状态、认证授权、业务流程和数据所有权需要明确的人工核验。验证期间,部分早期试用扫描可能免费;这不是生产 SLA,也不承诺一定提供修复。
申请早期试用复核 →表单会自动生成结构化申请邮件;也可以直接写信,包含邮箱、应用名称、公开 HTTPS 网址或公开仓库、构建工具、希望的方案和授权确认。切勿发送密码、Token、API Key、私钥或 .env 文件。