用途
该技能面向应用的安全运维与部署阶段,提供从上线前准备到上线后监控与维护的操作性指导。核心目标是帮助开发者系统性地决定:哪些接口需要限流、哪些需要 CSRF 防护,以及如何安全地管理密钥、校验配置、执行部署检查、开展安全监控和维护排期。内容主要围绕 Node.js/Next.js 项目(并涉及 Clerk、Convex、Stripe 等服务)展开。
主要能力
中间件应用决策
- withRateLimit():建议始终应用于可能被滥用(垃圾请求、暴力破解)、登录类操作、数据创建/修改端点、联系/支持表单、Webhooks(防 DoS)、文件上传、搜索、数据导出、昂贵的 AI/API 操作、报告生成与批量操作。通常无需用于静态资源请求(由 CDN 处理)、仅读取公开数据的简单 GET、健康检查端点,以及已被认证限流保护的端点。
- withCsrf():建议始终应用于所有 POST/PUT/DELETE 操作、任何改变状态的操作、表单提交、账户修改、支付操作与数据删除。可跳过 GET 请求、公开只读端点,以及 Webhooks(改用签名验证)。
- 组合顺序:代码
export const POST = withRateLimit(withCsrf(handler));,原因是限流先运行以尽早拦截过量请求,CSRF 验证仅作用于通过限流的请求,更高效。 - 提供决策矩阵,按路由类型(公开表单、受保护数据修改、公开只读 API、受保护只读 API、Webhook、文件上传)给出限流/CSRF/认证的取舍建议。
环境变量与密钥管理
列出项目所需环境变量,包括 CSRF_SECRET、SESSION_SECRET、Clerk、Convex、Stripe 及 Clerk Webhook Secret,并区分开发(.env.local,绝不提交)与生产(托管平台)配置。提供生成密钥命令:node -p "require('crypto').randomBytes(32).toString('base64url')"。给出最佳实践:不同环境使用不同密钥、生成 32+ 字节强随机值、加入 .gitignore、存于托管平台密钥管理、每季度轮换、启动时校验;禁止硬编码密钥、提交 .env.local、记录环境变量、在客户端代码暴露密钥、在 NEXT_PUBLIC_* 中存放敏感值、通过不安全渠道分享。
启动配置校验
提供 lib/config.ts 校验示例,检查必需环境变量是否缺失、CSRF_SECRET 与 SESSION_SECRET 是否至少 32 字符,并在应用启动(如 middleware.ts 或 layout.tsx)调用 validateConfig()。
部署前安全检查清单
涵盖环境与配置、依赖(npm audit --production、npm outdated、lock 文件提交、Next.js 版本等)、安全功能(CSRF、限流、输入验证、安全响应头、HSTS、生产环境通用错误信息)、认证与授权(受保护路由、资源归属、订阅状态、Webhook 签名、会话过期、无硬编码凭据)、API 安全(CSRF/限流/输入校验/错误处理、日志无敏感数据)、支付安全(使用 Clerk Billing + Stripe、Svix 签名验证、服务端校验订阅、生产关闭测试模式、不记录卡号)、测试与最终检查(含 grep 检查硬编码密钥、验证 .env.local 未提交、npm audit、生产构建测试等命令)。
部署后安全监控
说明需要监控的日志模式:限流违规(HTTP 429)、CSRF 失败(403)、认证失败(401/403)与异常错误模式,并给出对应的潜在攻击解读。列出每周追踪指标:认证、限流、CSRF、输入验证与错误率指标。提供 Vercel 日志、Clerk 仪表盘与自定义安全日志函数 logSecurityEvent 的示例。
响应流程与告警
按优先级划分响应级别:高优先级(立即响应,如认证失败激增 >100/min、多 IP CSRF 失败、500 错误率骤增、已知漏洞被利用)、中优先级(24 小时内,如限流违规渐增、单 IP 持续认证失败)、低优先级(每周审查,如常规后台失败)。给出 Vercel 告警规则示例与自定义告警代码示例。
资源、维护与命令
列出项目内安全文档路径、测试与验证脚本(test-rate-limit.js、security-check.sh、security-test.sh)、示例实现路径,以及外部资源(OWASP Top 10 2021、OWASP Cheat Sheet、Next.js/Clerk/Convex/Stripe 安全文档、Security Headers、Mozilla Observatory、SSL Labs)。给出维护排期:每日查日志与 Clerk 仪表盘;每周 npm audit 与 Dependabot 检查;每月完整审计、更新依赖、轮换密钥、检查安全头;每季度轮换 CSRF_SECRET/SESSION_SECRET、升级框架、渗透测试、更新策略与安全意识培训。并提供快速参考命令(生成密钥、审计、检查过期、测试套件、grep 硬编码密钥、curl 检查响应头、验证 .env.local 未提交、生产构建测试)。
使用方式
在 Claude 等支持 skills 的环境中加载该技能,即可在部署、监控与维护相关任务中获得上述决策指引与检查清单参考。
适用场景
适用于使用 Next.js、Clerk、Convex、Stripe 等栈的项目在上线准备、生产部署、安全监控、事件响应与周期性维护时参考。
限制
该资料为安全运维指南性质,未提供具体定价、收费模式或授权许可信息;部分命令与路径依赖具体项目结构(如 scripts/、app/api/ 等)与实际技术栈,需结合项目情况调整。其他未在资料中说明的功能或效果暂未提供。