35 lines
746 B
JavaScript
35 lines
746 B
JavaScript
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;
|