diff --git a/PROJECT_AUDIT_2026-03-03.md b/PROJECT_AUDIT_2026-03-03.md index 025045c..3fff449 100644 --- a/PROJECT_AUDIT_2026-03-03.md +++ b/PROJECT_AUDIT_2026-03-03.md @@ -68,7 +68,12 @@ - 至少要求登录态;更稳妥是同时校验房间成员身份(若与房间上下文绑定); - 配合限流(IP + 用户维度)。 -### P1-2 API 错误响应直接回传内部异常细节(信息泄露) +### P1-2 API 错误响应直接回传内部异常细节(信息泄露)【已完成】 +- 修复状态:✅ 已完成(2026-03-03) +- 修复内容: + - `apiHandler` 对未知异常返回统一文案 `操作失败,请稍后重试`; + - 内部异常细节仅保留在服务端日志; + - 更新对应单元测试断言。 - 证据: - `src/lib/api.ts:63-65`(500 响应包含 `ErrorName: message`) - 影响: diff --git a/src/lib/api.test.ts b/src/lib/api.test.ts index af12a15..e5f23cf 100644 --- a/src/lib/api.test.ts +++ b/src/lib/api.test.ts @@ -98,7 +98,7 @@ describe("apiHandler", () => { const res = await handler(req, mockCtx); const data = await res.json(); expect(res.status).toBe(500); - expect(data.error).toBe("操作失败 [Error: unexpected]"); + expect(data.error).toBe("操作失败,请稍后重试"); consoleSpy.mockRestore(); }); }); diff --git a/src/lib/api.ts b/src/lib/api.ts index af8b3a9..7867880 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -60,9 +60,11 @@ export function apiHandler(handler: RouteHandler): RouteHandler { { status: 409 }, ); } - const detail = e instanceof Error ? `${e.name}: ${e.message}` : String(e); console.error(`[API ${req.method} ${req.nextUrl.pathname}]`, e); - return NextResponse.json({ error: `操作失败 [${detail}]` }, { status: 500 }); + return NextResponse.json( + { error: "操作失败,请稍后重试" }, + { status: 500 }, + ); } }; }