fix: mask secrets when characters get uri encoded
This commit is contained in:
parent
63fa143023
commit
ca90b34c4a
@ -11,7 +11,12 @@ module.exports = (env) => {
|
|||||||
return /token|password|credential|secret|private/i.test(envVar) && size(env[envVar].trim()) >= SECRET_MIN_SIZE;
|
return /token|password|credential|secret|private/i.test(envVar) && size(env[envVar].trim()) >= SECRET_MIN_SIZE;
|
||||||
});
|
});
|
||||||
|
|
||||||
const regexp = new RegExp(toReplace.map((envVar) => escapeRegExp(env[envVar])).join('|'), 'g');
|
const regexp = new RegExp(
|
||||||
|
toReplace
|
||||||
|
.map((envVar) => `${escapeRegExp(env[envVar])}|${encodeURI(escapeRegExp(env[envVar]))}`)
|
||||||
|
.join('|'),
|
||||||
|
'g'
|
||||||
|
);
|
||||||
return (output) =>
|
return (output) =>
|
||||||
output && isString(output) && toReplace.length > 0 ? output.toString().replace(regexp, SECRET_REPLACEMENT) : output;
|
output && isString(output) && toReplace.length > 0 ? output.toString().replace(regexp, SECRET_REPLACEMENT) : output;
|
||||||
};
|
};
|
||||||
|
@ -24,6 +24,14 @@ test('Replace sensitive environment variable matching specific regex for "privat
|
|||||||
t.is(hideSensitive(env)(`https://host.com?token=${env.privateKey}`), `https://host.com?token=${SECRET_REPLACEMENT}`);
|
t.is(hideSensitive(env)(`https://host.com?token=${env.privateKey}`), `https://host.com?token=${SECRET_REPLACEMENT}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Replace url-encoded environment variable', (t) => {
|
||||||
|
const env = {privateKey: 'secret '};
|
||||||
|
t.is(
|
||||||
|
hideSensitive(env)(`https://host.com?token=${encodeURI(env.privateKey)}`),
|
||||||
|
`https://host.com?token=${SECRET_REPLACEMENT}`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test('Escape regexp special characters', (t) => {
|
test('Escape regexp special characters', (t) => {
|
||||||
const env = {SOME_CREDENTIALS: 'p$^{.+}\\w[a-z]o.*rd'};
|
const env = {SOME_CREDENTIALS: 'p$^{.+}\\w[a-z]o.*rd'};
|
||||||
t.is(
|
t.is(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user