SuperAPI AI 工具集

error-sanitization

安全与审计

查看项目

更新于 10-16 04:38

技能介绍

用途

Error Sanitization 用于解决生产环境中错误消息泄露敏感信息的问题。错误消息可能包含数据库连接字符串、内部文件路径、堆栈跟踪、API 密钥以及业务逻辑细节。该技能的目标是:始终在服务端记录完整错误详情以便调试,同时只向用户返回通用、安全的提示。

主要能力

  • 敏感模式识别:内置敏感模式列表,涵盖 password、secret、key、token、credential 等关键词,postgresql://、mysql://、mongodb://、redis:// 等连接串前缀,localhost、127.0.0.1、internal、0.0.0.0 等内部地址,traceback、exception、error at、line 等堆栈线索,/home/、/var/、/etc/、C:\ 等路径,以及 SUPABASE、AWS、STRIPE、SENDGRID 等厂商标识。
  • 环境区分:通过 ENVIRONMENT(Python)或 NODE_ENV(TypeScript)判断是否为生产环境。开发环境返回更详细的错误信息,生产环境返回通用消息。
  • 安全错误放行:验证错误(ValidationError)属于用户输入问题,可安全暴露;HTTPException 中 4xx 客户端错误可返回原始 detail,5xx 则返回通用消息。
  • 短错误判断:长度小于 100 且不含 /、\、@、: 等字符的简单错误可能安全,可直接返回。
  • 服务端完整日志:无论是否清理,都先以 exc_info=True 记录完整错误类型、消息与堆栈,并可附加 log_context 上下文。
  • 领域专用清理器:提供数据库错误、外部 API 错误等场景的封装示例。
  • 批处理部分失败处理:逐项处理时记录失败项的行号、截断后的描述、错误类型与用户友好消息,不包含原始异常字符串。

使用方式

核心流程为:异常发生 → 服务端记录完整错误与上下文 → 分类错误类型 → 向用户返回通用消息 → 仅暴露安全、可操作的错误(如验证错误)。

Python 侧提供 ErrorSanitizer 类,包含 is_production()、sanitize_error() 和 create_http_exception() 方法;TypeScript 侧提供 ErrorSanitizer 类,包含 sanitize() 和 createHttpError() 方法。在路由处理器中,可对 ValidationError 直接抛出 400,对 HTTPException 原样重抛,其余异常统一走清理器生成 500 响应。

适用场景

  • 构建向客户端返回错误消息的 API
  • 生产环境中的异常处理
  • 存在部分失败的批处理操作
  • 任何错误消息可能泄露敏感信息的系统

限制与注意事项

资料未提供该技能的安装命令、依赖版本、性能数据或收费信息。使用时需注意:生产环境不要暴露原始异常消息;清理前不要忘记记录完整错误;日志消息本身也不应包含密码、连接串等敏感数据;需在生产模式下测试错误响应,因为开发与生产表现不同;不要盲目信任“安全”错误不含注入内容。相关模式包括 exception-taxonomy(带错误码的层级异常系统)、circuit-breaker(防止级联失败)和 error-handling(通用错误处理模式)。