From 14ddbc7c57a01da9fb65fd87d8588532b11833fa Mon Sep 17 00:00:00 2001 From: Haile <118998054+blackmammoth@users.noreply.github.com> Date: Fri, 5 Jun 2026 15:23:27 +0300 Subject: [PATCH] fix: redact websocket auth token in logs (#827) --- .../modules/websocket/services/websocket-auth.service.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/modules/websocket/services/websocket-auth.service.ts b/server/modules/websocket/services/websocket-auth.service.ts index bd689d5d..bd76c65f 100644 --- a/server/modules/websocket/services/websocket-auth.service.ts +++ b/server/modules/websocket/services/websocket-auth.service.ts @@ -20,7 +20,13 @@ export function verifyWebSocketClient( dependencies: WebSocketAuthDependencies ): boolean { const request = info.req as AuthenticatedWebSocketRequest; - console.log('WebSocket connection attempt to:', request.url); + const upgradeUrl = new URL(request.url ?? '/', 'http://localhost'); + const loggedUrl = new URL(upgradeUrl); + if (loggedUrl.searchParams.has('token')) { + loggedUrl.searchParams.set('token', 'REDACTED'); + } + + console.log('WebSocket connection attempt to:', `${loggedUrl.pathname}${loggedUrl.search}`); // Platform mode: use the first DB user and skip token checks. if (dependencies.isPlatform) { @@ -36,7 +42,6 @@ export function verifyWebSocketClient( } // OSS mode: read JWT from query string first, then Authorization header. - const upgradeUrl = new URL(request.url ?? '/', 'http://localhost'); const token = upgradeUrl.searchParams.get('token') ?? request.headers.authorization?.split(' ')[1] ??