修复 API 500 响应泄露内部错误细节
This commit is contained in:
@@ -68,7 +68,12 @@
|
||||
- 至少要求登录态;更稳妥是同时校验房间成员身份(若与房间上下文绑定);
|
||||
- 配合限流(IP + 用户维度)。
|
||||
|
||||
### P1-2 API 错误响应直接回传内部异常细节(信息泄露)
|
||||
### P1-2 API 错误响应直接回传内部异常细节(信息泄露)【已完成】
|
||||
- 修复状态:✅ 已完成(2026-03-03)
|
||||
- 修复内容:
|
||||
- `apiHandler` 对未知异常返回统一文案 `操作失败,请稍后重试`;
|
||||
- 内部异常细节仅保留在服务端日志;
|
||||
- 更新对应单元测试断言。
|
||||
- 证据:
|
||||
- `src/lib/api.ts:63-65`(500 响应包含 `ErrorName: message`)
|
||||
- 影响:
|
||||
|
||||
+1
-1
@@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
+4
-2
@@ -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 },
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user