mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +01:00
fix: escape flag filters
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
|
const validator = require('validator');
|
||||||
|
|
||||||
const user = require('../user');
|
const user = require('../user');
|
||||||
const groups = require('../groups');
|
const groups = require('../groups');
|
||||||
@@ -43,9 +44,9 @@ modsController.flags.list = async function (req, res) {
|
|||||||
filters = filters.reduce((memo, cur) => {
|
filters = filters.reduce((memo, cur) => {
|
||||||
if (req.query.hasOwnProperty(cur)) {
|
if (req.query.hasOwnProperty(cur)) {
|
||||||
if (typeof req.query[cur] === 'string' && req.query[cur].trim() !== '') {
|
if (typeof req.query[cur] === 'string' && req.query[cur].trim() !== '') {
|
||||||
memo[cur] = req.query[cur].trim();
|
memo[cur] = validator.escape(String(req.query[cur].trim()));
|
||||||
} else if (Array.isArray(req.query[cur]) && req.query[cur].length) {
|
} else if (Array.isArray(req.query[cur]) && req.query[cur].length) {
|
||||||
memo[cur] = req.query[cur];
|
memo[cur] = req.query[cur].map(item => validator.escape(String(item).trim()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -928,6 +928,11 @@ describe('Flags', () => {
|
|||||||
assert.strictEqual(flagData.reports[0].value, '"<script>alert('ok');</script>');
|
assert.strictEqual(flagData.reports[0].value, '"<script>alert('ok');</script>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should escape filters', async () => {
|
||||||
|
const { body } = await request.get(`${nconf.get('url')}/api/flags?quick="<script>alert('foo');</script>`, { jar });
|
||||||
|
assert.strictEqual(body.filters.quick, '"<script>alert('foo');</script>');
|
||||||
|
});
|
||||||
|
|
||||||
it('should not allow flagging post in private category', async () => {
|
it('should not allow flagging post in private category', async () => {
|
||||||
const category = await Categories.create({ name: 'private category' });
|
const category = await Categories.create({ name: 'private category' });
|
||||||
|
|
||||||
@@ -1185,5 +1190,7 @@ describe('Flags', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user