KamoCRM

Stop logging session tokens, OTKs and auth headers on every request

FixAPIService
Shipped
September 23, 2026 at 10:16 AM UTC
Author
Kamo
Commit
3e5793d

forward() printed the entire copied-header map on every single call -- System.out.println("APIService: copied headers: " + outHeaders) -- which serializes X-***-Token, Cookie, X-OTK and Authorization in full, plus a separate line with a 32-character *** prefix. Combined with org.springframework.web at DEBUG in the ConfigMap (Spring MVC logs request headers of its own at that level), live logs held 32 *** tokens and 52 X-OTK values in one 30-minute window. This gateway is the platform's single chokepoint for every /api/** call, so that was continuous exposure of tenant session material in a place nothing can redact after the fact. Removed all ~31 System.out.println calls (and one printStackTrace) from APIGatewayController -- roughly 15-20 ran per request, which was also a throughput tax on the busiest service on the platform. The two exception paths in forward() now log at most one WARN line each, naming the method, URI and status/exception message -- never a header map or a body. org.springframework.web is WARN in both k8s/config.yaml (what the cluster actually reads) and **************** (what a local run reads). CredentialLoggingTest drives a real forwarded request carrying all four credential shapes and asserts nothing at all reaches System.out; reverting the header-dump println fails it immediately.

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