ddreyer opened a new pull request, #19899:
URL: https://github.com/apache/pinot/pull/19899

   `ControllerResponseFilter` logs the full request URI at INFO for every 
request handled by the controller, so a credential passed as a query parameter 
is written to the controller log as-is. On a live controller, a `POST 
/tables?accessToken=...` (rejected with a 400) produced:
   
   ```
   INFO [ControllerResponseFilter] [grizzly-http-server-3]  Handled request 
from 127.0.0.1 POST https://localhost:19000/tables?accessToken=FAKE-BASE215-QP, 
content-type application/json status code 400 Bad Request
   ```
   
   This masks the values of query parameters whose name matches 
`Obfuscator.DEFAULT`, so that line now reads `...tables?accessToken=*****`. 
Other parameters keep their original order and values, because things like 
`?type=OFFLINE` are what make the line useful when debugging. The name is 
decoded before it's checked, so `access%54oken` doesn't slip past, and a 
repeated sensitive parameter collapses to a single mask so the number of values 
isn't shown either.
   
   It's independent of, but related to, #19555 (audit log payload redaction) 
and #19884 (wider `Obfuscator` defaults). Once #19884 merges, this line picks 
up its extra patterns automatically.
   
   `ControllerResponseFilterTest` (new, 6 tests) passes locally and checkstyle 
is clean.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to