用途
本技能用于理解 Secure Vibe Coding OS 的整体安全架构与纵深防御方法。该项目是一个以安全为核心设计的生产级 SaaS 起步模板,基于 Next.js 15.5.4,宣称安全审计状态为 0 漏洞,OWASP 评分 90/100(处于 Next.js 应用前 10%)。
该架构的出发点:据 Veracode 2024 年软件安全状况报告,AI 生成代码有 45% 的概率采用不安全模式;标准 SaaS 起步模板往往只提供基础认证,开发者在不安全的基础上继续用 AI 构建功能,使每个新功能都可能成为漏洞。本架构通过纵深防御、安全默认模式、AI 友好的安全工具和 90/100 OWASP 基线来打破这一循环。
主要能力
核心安全原则
- 纵深防御:每个请求经过多层安全控制,一层失效其他层仍可拦截。
- 失败即拒绝(Fail-Secure):出错时默认拒绝访问。
- 最小权限:用户与系统仅获得所需的最小访问权限。
- 安全是已实现的,而非假定的:安全内建于每个工具、中间件和模式中。
5 层安全栈
每个请求在到达业务逻辑前依次经过:
- 第 0 层 中间件(安全响应头):X-Frame-Options: DENY、Content-Security-Policy、HSTS(仅生产环境)、X-Content-Type-Options: nosniff。
- 第 1 层 速率限制:每 IP 每分钟 5 次请求,超出返回 HTTP 429,防止暴力破解与资源滥用。
- 第 2 层 CSRF 防护:HMAC-SHA256 加密签名、一次性令牌,无效返回 HTTP 403。
- 第 3 层 输入校验:Zod schema 校验、自动 XSS 清理、类型安全的数据转换,无效返回 HTTP 400。
- 第 4 层 业务逻辑:处理函数在此运行,接收已校验、已清理的数据;Clerk 认证在中间件中检查。
- 第 5 层 安全错误处理:生产环境返回通用消息,开发环境返回详细错误,避免信息泄露。
环境差异化安全
- 开发环境(宽松):详细错误消息(完整堆栈)、详细日志、允许 HTTP(localhost)、开发密钥。
- 生产环境(最大保护):仅通用错误消息、最小化日志(不含 PII)、强制 HTTPS(HSTS)、生产密钥。
- 代码通过检测 process.env.NODE_ENV === 'production' 自动调整安全姿态。
技术栈安全组件
- 认证:Clerk(SOC 2 认证,处理密码哈希、会话、MFA、OAuth,宣称相比自建实现减少 73% 认证漏洞)。
- 支付:Clerk Billing + Stripe(不接触卡数据,PCI-DSS 合规,Webhook 签名验证)。
- 数据库:Convex(类型安全查询,通过 ctx.auth.userId 限定用户数据,mutation 中附加校验)。
- 框架:Next.js 15.5.4(最新安全补丁、中间件全局安全控制、App Router 更清晰的安全边界)。
安全子技能选用指引
- API 路由保护:csrf-protection(创建改变状态的 POST/PUT/DELETE 端点时)、rate-limiting(保护表单、昂贵操作等端点)、input-validation(接受任何用户输入时)。
- 应用安全:security-headers(配置中间件或理解 CSP/HSTS)、error-handling(API 路由错误响应)、auth-security(使用 Clerk 实现认证/授权)。
- 集成:payment-security(通过 Clerk Billing 实现 Stripe 支付)、dependency-security(添加包或运行安全审计)。
- 验证:security-testing(测试安全功能或部署前检查清单)。
安全感知内容
技能还包含对 AI 生成代码漏洞的说明,引用多项研究统计:45% 的 AI 生成代码存在不安全模式(Veracode 2024)、36-72% 含漏洞(Georgetown CSET 2024)、68% 的数据库查询存在 SQL 注入(Aikido Security 2025)、81% 不安全存储密码(Databricks 2025)。并列出漏洞分类子技能:注入漏洞、认证缺陷、信息泄露、供应链风险、业务逻辑缺陷、资源耗尽,以及总体安全感知概览。
使用方式
技能提供可直接复制的 API 路由模板:
-
简单受保护端点(无 CSRF):使用 withRateLimit 包装处理函数,通过 Clerk 的 auth() 检查 userId,未认证返回 handleUnauthorizedError(),catch 中调用 handleApiError(),并设置 runtime: 'nodejs'。
-
表单提交完整保护:在速率限制基础上叠加 withCsrf,使用 validateRequest 配合 Zod schema(如 contactFormSchema)校验请求体,校验失败返回 validation.response。
-
公开端点(无认证、有速率限制):使用 withRateLimit 包装,配合 validateRequest 与 emailSchema 等 schema 校验。
完整安全 API 路由示例(app/api/contact/route.ts)展示了从导入 withRateLimit、withCsrf、validateRequest、contactFormSchema、handleApiError,到在 handler 中校验、处理、错误处理的完整流程,最后导出 POST = withRateLimit(withCsrf(contactHandler)) 并设置 runtime: 'nodejs'(加密操作所需)。
技能还给出新建 API 路由的安全检查清单:应用 withRateLimit()、对 POST/PUT/DELETE 应用 withCsrf()、用 lib/validation.ts 中的 Zod schema 校验输入、在 catch 中使用 handleApiError()、用 Clerk 的 await auth() 检查认证、访问用户资源时检查授权、使用正确的 HTTP 状态码(200、400、401、403、404、429、500)、不记录敏感数据(密码、令牌、PII)、为加密操作设置 runtime: 'nodejs'、提交前测试端点。
适用场景
- 需要理解该模板整体安全方法、5 层安全栈与架构决策依据时。
- 在 Next.js 应用中创建或审查 API 路由、表单提交、公开端点时。
- 需要按任务选择对应安全子技能(CSRF、速率限制、输入校验、安全头、错误处理、认证、支付、依赖、测试)时。
- 需要了解 AI 生成代码常见漏洞类型与真实案例时。
限制
- 资料未提供该技能的安装命令、调用语法或具体运行环境要求。
- 资料未提供收费、价格或授权方式信息。
- 资料中引用的统计数据、案例与评分均来自原文陈述,未提供独立验证。
- 资料末尾的 Next Steps 部分内容被截断(error-han),未完整给出。
- 资料未说明该技能与各子技能之间的依赖或版本兼容细节。