Есть ли способ ограничить допустимые символы uri в Expressjs. например, установить переменную символов:Nodejs Expressjs URI-символы
allowed_uri_chars = 'a-zA-Z0-9'; etc
Есть ли способ ограничить допустимые символы uri в Expressjs. например, установить переменную символов:Nodejs Expressjs URI-символы
allowed_uri_chars = 'a-zA-Z0-9'; etc
Наиболее логичный и простой путь будет использовать регулярное выражение в каком-то промежуточный слое:
var url = require("url");
app.use(function(req, res, next) {
var pathname = url.parse(req.url).pathname;
if(!pathname.match(/^[a-z0-9\/]+$/i)) return res.send(403);
next();
});
Или, как URL уже разобран курьерским, но это не подвергается публично, вы можете чтобы сохранить один вызов для анализа и полагаться на внутренних экспресс (которые я бы не советовал):
app.use(function(req, res, next) {
if(!req._parsedUrl.pathname.match(/^[a-z0-9\/]+$/i)) return res.send(403);
next();
});
Это гарантирует, что ваш путь к файлу (для http://example.com/foo/bar?id=1334
, путь к файлу будет /foo/bar
) содержит только буквы, цифры и слеши. Он поднимает 403, если нет.
Не можете ли вы использовать регулярное выражение для анализа разрешенных символов?
Или вы имеете в виду прямо в маршрутизации?
Хорошо, как я могу использовать регулярное выражение? Я действительно ничего не знаю о том, как добиться этого. Я думал о промежуточном программном обеспечении, чтобы проверить запрос. И хочу, чтобы это было сделано во всем мире. – georgesamper
Отлично! Только то, что я хотел. – georgesamper
Ты очень рад =) – Pierre