Skip to content

Commit 5d87516

Browse files
committed
Address remaining feedback.
1 parent 2283752 commit 5d87516

File tree

3 files changed

+33
-20
lines changed

3 files changed

+33
-20
lines changed

src/core/server/http/integration_tests/logging.test.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,6 @@ describe('request logging', () => {
5757
},
5858
},
5959
},
60-
root: {
61-
appenders: ['test-console', 'default'],
62-
level: 'warn',
63-
},
6460
loggers: [
6561
{
6662
context: 'http.server.response',
@@ -107,10 +103,6 @@ describe('request logging', () => {
107103
},
108104
},
109105
},
110-
root: {
111-
appenders: ['test-console', 'default'],
112-
level: 'warn',
113-
},
114106
loggers: [
115107
{
116108
context: 'http.server.response',

src/core/server/http/logging/get_response_log.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,31 @@ describe('getEcsResponseLog', () => {
169169
}
170170
`);
171171
});
172+
173+
test('does not mutate original headers', () => {
174+
const reqHeaders = { authorization: 'a', cookie: 'b', 'user-agent': 'hi' };
175+
const resHeaders = { headers: { 'content-length': 123, 'set-cookie': 'c' } };
176+
const req = createMockHapiRequest({
177+
headers: reqHeaders,
178+
response: { headers: resHeaders },
179+
});
180+
getEcsResponseLog(req, logger);
181+
expect(reqHeaders).toMatchInlineSnapshot(`
182+
Object {
183+
"authorization": "a",
184+
"cookie": "b",
185+
"user-agent": "hi",
186+
}
187+
`);
188+
expect(resHeaders).toMatchInlineSnapshot(`
189+
Object {
190+
"headers": Object {
191+
"content-length": 123,
192+
"set-cookie": "c",
193+
},
194+
}
195+
`);
196+
});
172197
});
173198

174199
describe('ecs', () => {

src/core/server/http/logging/get_response_log.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,15 @@ const REDACTED_HEADER_TEXT = '[REDACTED]';
2020

2121
// We are excluding sensitive headers by default, until we have a log filtering mechanism.
2222
function redactSensitiveHeaders(
23-
headers: Record<string, string | string[]>
23+
headers?: Record<string, string | string[]>
2424
): Record<string, string | string[]> {
25-
return (
26-
headers &&
27-
Object.keys(headers).reduce(
28-
(acc, key) => ({
29-
// Create a shallow copy to prevent mutating the original headers
30-
...acc,
31-
[key]: FORBIDDEN_HEADERS.includes(key) ? REDACTED_HEADER_TEXT : headers[key],
32-
}),
33-
{} as Record<string, string | string[]>
34-
)
35-
);
25+
const result = {} as Record<string, string | string[]>;
26+
if (headers) {
27+
for (const key of Object.keys(headers)) {
28+
result[key] = FORBIDDEN_HEADERS.includes(key) ? REDACTED_HEADER_TEXT : headers[key];
29+
}
30+
}
31+
return result;
3632
}
3733

3834
/**

0 commit comments

Comments
 (0)