Skip to content

Commit 4a6e3b2

Browse files
committed
Mask sensitive information when logging
1 parent 1854928 commit 4a6e3b2

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

spec/FileLoggerAdapter.spec.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
'use strict';
2+
13
var FileLoggerAdapter = require('../src/Adapters/Logger/FileLoggerAdapter').FileLoggerAdapter;
24
var Parse = require('parse/node').Parse;
35

@@ -21,6 +23,28 @@ describe('info logs', () => {
2123
});
2224
});
2325
});
26+
27+
it("Can mask sensitive information", (done) => {
28+
let customConfig = Object.assign({}, defaultConfiguration, {verbose: true});
29+
setServerConfiguration(customConfig);
30+
createTestUser().then(() => {
31+
let fileLoggerAdapter = new FileLoggerAdapter();
32+
fileLoggerAdapter.query({
33+
from: new Date(Date.now() - 500),
34+
size: 100,
35+
level: 'verbose'
36+
}, (results) => {
37+
if(results.length == 0) {
38+
fail('The adapter should return non-empty results');
39+
done();
40+
} else {
41+
expect(results[1].message.includes('"password": "******"')).toEqual(true);
42+
done();
43+
}
44+
});
45+
});
46+
});
47+
2448
});
2549

2650
describe('error logs', () => {

src/logger.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@ export function configureLogger({logsFolder, level = winston.level}) {
5050
currentLogsFolder = logsFolder;
5151

5252
logger.configure({
53-
transports: generateTransports(level)
53+
transports: generateTransports(level),
54+
filters: [
55+
(level, msg, meta) => {
56+
return maskSensitiveInformation(msg);
57+
}
58+
]
5459
})
5560
}
5661

@@ -71,5 +76,16 @@ export function addGroup(groupName) {
7176
return winston.loggers.get(groupName);
7277
}
7378

79+
function maskSensitiveInformation(msg) {
80+
let match;
81+
if (match = msg.match(/("password": ".*")/)) {
82+
msg = msg.replace(match[1], '"password": "******"');
83+
}
84+
if (match = msg.match(/(password=.*)&?/)) {
85+
msg = msg.replace(match[1], 'password=******');
86+
}
87+
return msg;
88+
}
89+
7490
export { logger };
7591
export default logger;

0 commit comments

Comments
 (0)