File tree Expand file tree Collapse file tree 2 files changed +19
-15
lines changed Expand file tree Collapse file tree 2 files changed +19
-15
lines changed Original file line number Diff line number Diff line change 55## [ v1.2.3 (2025-06-16)] ( https://github.com/onlime/laravel-http-client-global-logger/compare/v1.2.2...v1.2.3 )
66
77- [ Security] Body key obfuscation (` obfuscate.body_keys ` config) is now also applied to response body, both for JSON or form-styled content.
8+ - Refactored ` obfuscateBody() ` for performance to run single regex replacements on message body.
89
910## [ v1.2.2 (2025-06-16)] ( https://github.com/onlime/laravel-http-client-global-logger/compare/v1.2.1...v1.2.2 )
1011
Original file line number Diff line number Diff line change @@ -16,21 +16,24 @@ protected function obfuscateBody(string $message): string
1616 {
1717 $ replacement = config ('http-client-global-logger.obfuscate.replacement ' );
1818
19- foreach (config ('http-client-global-logger.obfuscate.body_keys ' ) as $ key ) {
20- $ quoted = preg_quote ($ key , '/ ' );
21- // JSON-style: "key":"value"
22- $ message = preg_replace (
23- '/(?<=" ' .$ quoted .'":")[^"]*(?=")/mU ' ,
24- $ replacement ,
25- $ message
26- );
27- // form-style: key=value (until & or end)
28- $ message = preg_replace (
29- '/(?<=\b ' . $ quoted .'=)[^&]*(?=&|$)/ ' ,
30- $ replacement ,
31- $ message
32- );
33- }
19+ // Build regex pattern for keys to obfuscate
20+ $ keysPattern = implode ('| ' , array_map (
21+ fn (string $ key ) => preg_quote ($ key , '/ ' ),
22+ config ('http-client-global-logger.obfuscate.body_keys ' )
23+ ));
24+
25+ // JSON-style: "(key1|key2)": "someValue"
26+ $ message = preg_replace (
27+ '/(?<="(?: ' . $ keysPattern . ')":")[^"]*(?=")/mU ' ,
28+ $ replacement ,
29+ $ message
30+ );
31+ // form-style: key1=someValue& or key2=someValue$
32+ $ message = preg_replace (
33+ '/(?<=\b(?: ' . $ keysPattern .')=)[^&]*(?=&|$)/ ' ,
34+ $ replacement ,
35+ $ message
36+ );
3437
3538 return $ message ;
3639 }
You can’t perform that action at this time.
0 commit comments