SuperAPI AI 工具集

secure-nextjs-api-routes

编程与开发

查看项目

更新于 10-16 03:36

技能介绍

用途:为 Next.js 13+ App Router 的 API 路由提供一套可组合的安全中间件,覆盖认证、限流、CSRF 防护、审计日志、请求体大小限制、方法限制与安全响应头,宣称适用于生产环境模式。

主要能力:withSecurity 包装器按顺序检查允许的方法、认证(requireAuth,经 Supabase auth.getUser)、限流(RateLimiter.check)、POST/PUT/PATCH 的 content-length 体积限制、状态变更请求的 CSRF 校验(双提交 Cookie),并在响应上设置安全头(X-Content-Type-Options、X-Frame-Options、X-XSS-Protection、Referrer-Policy、Permissions-Policy)及可选 CORS 头。提供 PRESET:PUBLIC、AUTHENTICATED、STRICT。

组成模块:lib/security-middleware.ts(主包装器)、lib/csrf-protection.ts(生成/校验 CSRF token,Cookie 与 X-CSRF-Token 头比对)、lib/rate-limiter.ts(基于 Supabase 表 rate_limits 计数,匿名用户以 IP 哈希标识)、lib/audit-logger.ts(向 audit_logs 表写入安全事件)。另提供客户端 csrfFetch 辅助函数自动附带 CSRF 头。

使用方式:将上述模块文件放入项目 lib 目录,在路由中导入 withSecurity 与 SECURITY_PRESETS,例如 export const GET = withSecurity(handler, SECURITY_PRESETS.PUBLIC)。需在 Supabase SQL 编辑器创建 rate_limits 与 audit_logs 表及索引。限流标识可自定义,否则优先级为登录用户 ID、匿名 IP 哈希。

适用场景:新建需安全保护的 Next.js API 路由、为端点添加认证或限流、保护状态变更操作免受 CSRF、记录安全事件、限制请求体大小与方法。

限制:依赖 Supabase 作为限流与审计存储,未使用 Supabase 的项目需改造;限流为数据库窗口计数,未说明是否有原子性保证;资料未提供安装命令、版本兼容范围、性能数据、定价与授权信息,均属暂未提供;CORS 允许来源依赖 NEXT_PUBLIC_BASE_URL 与 localhost 配置。