const createSearch = require("../utils/createSearch"); const knownQueryParams = { main: true, // Deprecated, see #63 meta: true, module: true }; function isKnownQueryParam(param) { return !!knownQueryParams[param]; } function sanitizeQuery(originalQuery) { const query = {}; Object.keys(originalQuery).forEach(param => { if (isKnownQueryParam(param)) query[param] = originalQuery[param]; }); return query; } /** * Reject URLs with invalid query parameters to increase cache hit rates. */ function validateQuery(req, res, next) { if (!Object.keys(req.query).every(isKnownQueryParam)) { return res.redirect(302, req.path + createSearch(sanitizeQuery(req.query))); } next(); } module.exports = validateQuery;