Skip to content

Commit 7df4413

Browse files
committed
Mask sensitive information when logging
1 parent 1854928 commit 7df4413

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-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/PromiseRouter.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,15 @@ export default class PromiseRouter {
154154
function makeExpressHandler(promiseHandler) {
155155
return function(req, res, next) {
156156
try {
157+
// Mask sensitive information in logger
158+
let maskBody = Object.assign({}, req.body);
159+
for (let key of Object.keys(maskBody)) {
160+
if (key == 'password') {
161+
maskBody[key] = '******';
162+
}
163+
}
157164
log.verbose(req.method, req.originalUrl, req.headers,
158-
JSON.stringify(req.body, null, 2));
165+
JSON.stringify(maskBody, null, 2));
159166
promiseHandler(req).then((result) => {
160167
if (!result.response && !result.location && !result.text) {
161168
log.error('the handler did not include a "response" or a "location" field');

0 commit comments

Comments
 (0)