secure-error-handling 是面向开发者的安全错误处理技能,核心目标是防止生产环境中的错误响应泄露敏感信息,同时保留服务端调试能力。资料指出,详细错误可能暴露数据库结构、文件路径、依赖项和系统版本,被攻击者用于侦察;生产环境应仅返回通用提示,完整详情只记录在服务端日志。\n\n主要能力:提供 5 个错误处理函数,位于 lib/errorHandler.ts。handleApiError(error, context) 处理意外错误,HTTP 500;生产环境返回“内部服务器错误”等通用信息,开发环境返回完整错误、堆栈、上下文和时间戳。handleValidationError(message, details) 处理输入校验失败,HTTP 400,开发与生产均返回字段级错误。handleForbiddenError(message) 处理授权失败,HTTP 403。handleUnauthorizedError(message) 处理认证失败,HTTP 401,默认消息为“需要认证”。handleNotFoundError(resource) 处理资源不存在,HTTP 404,返回带资源名的消息。\n\n使用方式:在 Next.js API 路由中按顺序执行认证、参数校验、资源查询、授权检查,并在 catch 中调用 handleApiError。示例包括受保护的文章接口、支付处理接口和用户资料更新接口;支付场景建议区分 StripeCardError 等类型,避免把支付网关错误细节返回给客户端,其他 Stripe 问题返回通用消息和 500。\n\n日志方面:应记录错误类型/代码、上下文、用户 ID、时间戳、路径、状态码、IP、操作名和交易 ID;不得记录密码、完整卡号、CVV、API 密钥、会话令牌、加密密钥、完整请求体、环境变量和生产环境完整堆栈。建议对敏感字段做 REDACTED 脱敏,并使用 logSecurityEvent 等函数结构化记录安全事件。客户端可依据状态码显示友好提示。\n\n限制:资料未提供该技能的安装命令、收费方式、支持平台或版本信息,也未说明与具体框架之外的集成细节。
secure-error-handling
编程与开发
更新于 10-15 22:12