escape moderation notes

v1.18.x
Baris Usakli 8 years ago
parent db13aac106
commit dc9b21021a

@ -47,11 +47,7 @@ infoController.get = function (req, res, callback) {
}, },
}, next); }, next);
}, },
], function (err, data) { function (data) {
if (err) {
return callback(err);
}
userData.history = data.history; userData.history = data.history;
userData.sessions = data.sessions; userData.sessions = data.sessions;
userData.usernames = data.usernames; userData.usernames = data.usernames;
@ -66,5 +62,6 @@ infoController.get = function (req, res, callback) {
userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[user:account_info]]' }]); userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[user:account_info]]' }]);
res.render('account/info', userData); res.render('account/info', userData);
}); },
], callback);
}; };

@ -166,6 +166,7 @@ module.exports = function (User) {
var data = JSON.parse(note); var data = JSON.parse(note);
uids.push(data.uid); uids.push(data.uid);
data.timestampISO = utils.toISOString(data.timestamp); data.timestampISO = utils.toISOString(data.timestamp);
data.note = validator.escape(String(data.note));
return data; return data;
} catch (err) { } catch (err) {
return next(err); return next(err);

@ -1236,15 +1236,16 @@ describe('User', function () {
setTimeout(next, 50); setTimeout(next, 50);
}, },
function (next) { function (next) {
socketUser.setModerationNote({ uid: adminUid }, { uid: testUid, note: 'second moderation note' }, next); socketUser.setModerationNote({ uid: adminUid }, { uid: testUid, note: '<svg/onload=alert(document.location);//' }, next);
}, },
function (next) { function (next) {
User.getModerationNotes(testUid, 0, -1, next); User.getModerationNotes(testUid, 0, -1, next);
}, },
], function (err, notes) { ], function (err, notes) {
assert.ifError(err); assert.ifError(err);
assert.equal(notes[0].note, 'second moderation note'); assert.equal(notes[0].note, '&lt;svg&#x2F;onload=alert(document.location);&#x2F;&#x2F;');
assert.equal(notes[0].uid, adminUid); assert.equal(notes[0].uid, adminUid);
assert.equal(notes[1].note, 'this is a test user');
assert(notes[0].timestamp); assert(notes[0].timestamp);
done(); done();
}); });

Loading…
Cancel
Save