问题,分五步
滚动查看它如何崩溃——然后得到救援
1 · AI 在一个周末内构建它
Lovable、Bolt、Cursor、v0、Replit、FlutterFlow — 层层堆叠,演示看起来已完成。
2 · 真实用户到来
真实数据和真实流量冲击了只在理想路径上测试过的代码。
3 · 裂缝出现
认证漏洞。捆绑包中的秘密。非幂等支付。世界可读的表格。每次 AI 修复都会破坏其他东西 — 氛围循环。
4 · 我强化它
我重新架构脆弱的核心,堵塞漏洞,并添加 AI 跳过的认证、支付、安全和可观察性 — 无需重写。
5 · 生产级
在获得关注的一周内仍能正常运行的代码。您保留您的代码和技术栈。
交互式安全实验室
一个可运行的演示可能隐藏着一个被破坏的信任边界。
选择一个风险,触发一个合成事件,然后应用防护措施并重放。了解为什么支付、数据和权限需要独立检查。
选择一个场景
结账价格篡改
一个完善的结账流程仍然信任浏览器发送的价格。
浏览器 → 定价服务
实施说明
根据受信任的目录授权订单。客户端值可以表达意图,但不能设置应付金额。在服务器上重新检查折扣和货币。此夹具将价格篡改与不支持的产品选择相结合。
成功页面不是付款证明
在存在受信任的支付事件之前,界面显示“已支付”。
返回 URL → 权利存储
实施说明
重定向是导航,不是证据。在服务器端解析订单并确认其所有者、金额、货币和支付状态。延迟支付方式需要待处理状态。退款和争议需要明确的权利政策。
伪造和重复的 Webhook
事件端点信任有效负载并授予两次访问权限。
支付提供商 → Webhook → 记录
实施说明
提供商事件可能会重复或乱序到达。在解析业务含义之前验证原始请求。事件分类账必须在并行传递中幸存;读写标志不足。验证订单以及事件。
自指派管理员
可编辑的配置文件字段变为权限。
配置文件 → 受信任身份 → 受保护的 API
实施说明
身份验证识别调用者;授权确定他们可以做什么。隐藏的控件不保护 API。拒绝特权配置文件字段并在操作边界(包括后台任务)评估权限。
其他客户的发票
更改的记录标识符跨越组织边界。
会话 → 租户 → 记录
实施说明
在不同的组织中使用两个普通账户。测试直接记录、列表、导出和写入。绝不接受租户标识符作为成员资格证明。管理数据库客户端绕过规则,需要显式的服务器检查。
公共记录和私人文件
数据库规则和上传权限是独立的边界。
匿名访客 → 数据库和存储
实施说明
保护表并不能保护对象存储。单独审查列表、下载、上传和签名 URL 过期。公共客户端标识符不是管理员秘密;在此设置中,广泛的策略是漏洞。
暴露的密钥仍然危险
从浏览器中删除秘密并不能撤销之前的副本。
公共捆绑包 → 特权服务
实施说明
检查构建资产和仓库历史记录。将特权密钥保留在服务器上,并赋予最小权限。删除文件并非撤销。源映射并非本质上是秘密:审查其内容,而不是声称每个源映射都是漏洞。
不受信任的上传和渲染内容
文件标签和格式化文本未经验证就被接受。
上传 → 服务器验证 → 渲染
实施说明
浏览器验证是一种便利。在服务器上进行验证,并将文件名、MIME 声明和生成的内容视为不受信任。URL 获取功能还需要单独的网络限制。此设置不执行任何上传内容。
无限请求和 AI 成本
公共端点既没有请求限制也没有支出限制。
公共 API → 工作负载预算
实施说明
速率限制和配额回答了不同的问题:速度有多快以及数量有多少。在模型调用或昂贵作业之前应用控制。分布式部署需要共享计数器和明确的故障策略。不要相信浏览器冷却。
两次购买,一份信用
并行请求都通过了非原子余额检查。
API → 信用账本 → 履行
实施说明
幂等性密钥不能替代余额的正确性,事务也不能识别重试的逻辑购买。在边界处用一份剩余信用测试并行请求。一致地提交账本和业务状态。
一份文档要求导出客户数据
不受信任的指令将工具引向敏感数据。
外部文档 → 代理 → 授权工具
实施说明
提示过滤器不能保证工具授权。将受信任的指令与检索到的内容分开,限制工具参数和出站目的地,并将审批绑定到确切的操作。此模拟演示了在范围受限的工作流中仍需要审批的导出。
没有信号的风险发布
发布绕过了依赖性检查,管理员故障未被发现。
发布管道 → 运行时 → 监控
实施说明
扫描器发现需要上下文和修复所有权。警报只有在有人可以对其采取行动时才有用。保护日志免受秘密和过多的个人数据泄露。监控检测并支持响应;它不会自动消除每个漏洞。
推销背后的数字
这不是凭空猜测。这是经过衡量的。
创始人失败不是因为想法不好——他们失败是因为在获得关注的那一周,构建崩溃了。2025年的独立研究用确凿的数字说明了AI构建代码究竟在哪里崩溃。
~45%
AI 生成的代码引入了 OWASP Top 10 漏洞
Veracode, 2025 (测试了 100 多个模型)
86%
相关样本未能防御跨站脚本攻击
Veracode, 2025
未改善
安全性在100多个模型中保持不变——更大、更新的模型并没有编写更安全的代码
Veracode, 2025
AI代码崩溃的频率高出多少
AI编写代码与人工编写代码的问题,按类别划分。虚线以上的部分比人工编写的代码更糟糕。
它不会自行修复。 Veracode发现,在100多个不同规模和年代的模型中,安全性能保持不变——更新、更大的模型编写的功能代码更多,但并非更安全的代码。在应用程序发布之初就防止数据泄露的判断力仍然必须来自工程师。
签名诊断
10点生产就绪审计
每个领域都有我检查的内容——以及在凭感觉编写的应用程序中通常会出现故障的地方。您将收到一份按严重性排序的报告,其中包含生产就绪分数、每项发现的证据以及优先修复计划。
- 01
身份验证与访问控制
故障: 受保护路由缺少检查;用户能够冒充其他用户。
- 02
行级安全与数据访问
故障: 表格设置为全球可读/可写;从未启用RLS——头号“随性编码”数据泄露。
- 03
密钥与配置
故障: API密钥在客户端捆绑包中暴露或可从编译后的应用程序中提取。
- 04
支付与网络钩子
故障: 未经验证的网络钩子签名、无幂等性、竞态条件——虚假“已支付”事件和重复收费。
- 05
输入验证与错误处理
故障: 格式错误的输入、空状态和故障导致应用程序崩溃或数据损坏。
- 06
并发与扩展
故障: N+1查询、缺少索引、无速率限制——速度变慢或崩溃。
- 07
安全(OWASP Top 10)
故障: 注入、XSS、访问控制失效、不安全依赖项。
- 08
AI界面(OWASP LLM Top 10)
故障: 提示注入、数据泄露、无限制的模型成本——越狱和失控的账单。
- 09
可观测性
故障: 无日志记录、错误跟踪或警报——您是从用户那里得知系统宕机,而不是从仪表板。
- 10
架构与构建健康
故障: 内卷式纠缠——牵一发而动全身。
从审计到生产级
从评估和实际修复计划开始。如果您继续进行救援,审计费用将抵扣。
01
生产就绪审计
完整的10点诊断+书面报告,包含按严重程度排序的发现和修复计划。
$500–$900
2–3天
可抵扣救援费用。
02
紧急救援冲刺
修复关键问题——认证、支付、安全,以及其他阻碍性问题。
$2,500–$5,000
1–2周
03
全面强化
重构脆弱的核心;增加扩展性、测试和可观测性。达到生产级别。
从$6,000起
3–5周
04
维护计划
持续监控、修复和安全的功能开发,确保系统健康运行。
$1,500–$3,000/月
持续进行
常见问题
我不能直接让AI修复它吗?
这就是内卷式循环——每次修复都会引入新的bug,因为没有对整个系统进行审查。生产环境需要模型不具备的判断力。
重建不是更便宜吗?
通常不是。审计会准确显示哪些是可挽救的,因此您只需修复脆弱的部分,保留可用的部分——这比重写便宜得多。
你们会把我锁定在你们的技术栈中吗?
不会。您保留对代码和工具的完全所有权。我只是让您的技术栈达到生产级别。
我怎么知道它真的坏了?
评估会测试商定的流程并记录证据。初次通话会确定工作范围;这不是一次实时的渗透测试。