KamoCRM

Stop logging STOMP frame headers/payloads and /ws request headers

FixMediaService
Shipped
September 23, 2026 at 10:24 AM UTC
Author
Kamo
Commit
d4865f7

Two leftover debug-logging spots on the WebSocket path: - WebSocketConfig's inbound channel interceptor logged every STOMP frame at INFO, including accessor.toMap() (the CONNECT frame's headers carry the member's rights array) and the raw payload (chat message bodies) - on every frame the broker relays. - WebSocketLoggingFilter logged every header of every /ws/** request at INFO, including Cookie (the *** session token), on the SockJS handshake and polling paths every tab hits. Both are now at most a DEBUG one-liner: command/destination/session for a STOMP frame, method/path/status for an HTTP request - never headers, never a payload, never a cookie. WebSocketConfig's beforeHandshake/afterHandshake (which also dumped request.getHeaders(), same problem, same file) got the same treatment. The STOMP destination authorization block (SUBSCRIBE/SEND guarding via StompDestinationAuthz) is untouched - not a logging concern, and another agent's recent fix lives right next to it. Also dropped the banner/emoji startup logging in configureMessageBroker and registerStompEndpoints (one-time, not a security issue, but the same files and worth doing while touching them) down to one line each. Covered by WebSocketConfigFrameLoggingTest and WebSocketLoggingFilterTest, which attach a Logback ListAppender at Level.ALL and assert no captured event's formatted message contains a marker value planted in the frame's payload, its native "rights" header, or the request's Cookie/query string - mutation-checked against the old logging (reverting it turns 4 of the 6 assertions red, including both the rights-header and Cookie leaks).

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing