用途:为 Next.js API 路由提供 CSRF(跨站请求伪造)防护,主要针对 POST/PUT/DELETE 等会改变状态的端点。当用户已登录、浏览器会自动携带会话 Cookie 时,恶意网站可伪造请求,本技能用于阻止此类攻击。
主要能力:采用 HMAC-SHA256 对令牌签名;令牌与会话绑定,不可跨会话使用;令牌为单次使用,校验后即失效;配合 HTTP-Only Cookie 防止脚本读取;使用 SameSite=Strict 减少跨源 Cookie 发送;校验失败返回 HTTP 403。
使用方式:核心文件包括 lib/csrf.ts(令牌生成与校验)、lib/withCsrf.ts(强制校验的中间件)、app/api/csrf/route.ts(客户端获取令牌的端点)。用 withCsrf(handler) 包装处理器,并设置 runtime: 'nodejs' 以使用加密操作。客户端先请求 /api/csrf 获取 csrfToken,再在请求头 X-CSRF-Token 中携带,请求需带 credentials: 'include'。可按官方示例生成密钥:node -p "require('crypto').randomBytes(32).toString('base64url')",并配置 CSRF_SECRET、SESSION_SECRET 环境变量。
适用场景:需要保护表单提交、账户操作等状态变更接口的 Next.js 应用;测试可用 curl 携带 Cookie 与令牌验证 200/403 行为。
限制与注意:资料未提供具体收费、价格或平台兼容范围信息。不要将令牌放入 URL 参数,不要复用令牌,不要遗漏 credentials: 'include',不要跳过 POST/PUT/DELETE 的 CSRF 校验。生产环境应使用 HTTPS,密钥不应提交到版本控制,建议定期轮换并区分开发/测试/生产环境密钥。