后端异常处理安全输出与信息泄露防护最佳实践概述后端异常处理需避免敏感信息外泄,提供安全、统一、可审计的错误响应,同时保留诊断所需的关联信息。统一错误模型type ApiError = { code: string; message: string; traceId: string }
function safeError(err: unknown, traceId: string): ApiError {
const code = err instanceof Error ? err.name : 'unknown_error'
const map: Record<string, string> = {
ValidationError: '请求参数不合法',
ForbiddenError: '权限不足',
RateLimitError: '请求过于频繁'
}
return { code, message: map[code] || '请求处理失败', traceId }
}
安全输出与栈隔离function errorHandler(err: any, req: any, res: any, next: Function) {
const traceId = req.headers['x-trace-id'] || generateTraceId()
const payload = safeError(err, traceId)
res.setHeader('Content-Type', 'application/json; charset=utf-8')
res.setHeader('X-Content-Type-Options', 'nosniff')
res.status(500).end(JSON.stringify(payload))
}
审计与关联type AuditEvent = { traceId: string; error: string; path: string; method: string; timestamp: string }
function recordAudit(err: any, req: any) {
const evt: AuditEvent = { traceId: req.headers['x-trace-id'] || generateTraceId(), error: String(err?.name || 'Error'), path: req.path, method: req.method, timestamp: new Date().toISOString() }
logToSink(evt)
}
运维要点对外输出统一错误模型与安全文案,禁止栈与内部细节外泄使用相关ID(TraceID)关联日志与响应,便于诊断与审计对错误字段进行脱敏与控制,日志与响应分级留存通过统一模型与安全输出、审计关联与栈隔离,可在后端形成稳健的异常处理与泄露防护基线。

发表评论 取消回复