Как исключить символы из функции express -validators escape () - PullRequest
0 голосов
/ 11 января 2020

Я использую проверку из express -validator для проверки ввода пользователя и мне интересно, могу ли я исключить символы из теста? У меня есть

check("profile.about").trim().escape()

, который преобразует любые символы, используемые в HTML, в их эквивалентные HTML сущности, но это приводит к нежелательным результатам, если пользователь вводит апостроф. Есть ли способ отфильтровать апостроф из метода escape()? Если нет, то у кого-нибудь есть подсказки, как я могу имитировать c escape() и просто сбросить '. Спасибо

1 Ответ

1 голос
/ 11 января 2020

Можно сразу добавить другое промежуточное программное обеспечение для выполнения sh this ...

unescape-middleware.js

module.exports = (escaped, char) => function (req, res, next) {
    unescapeCharacter(req.params, escaped, char);
    unescapeCharacter(req.query, escaped, char);
    unescapeCharacter(req.body, escaped, char);
    return next();
}

function unescapeCharacter (obj, escaped, char) {
    for (const key in obj) {
        // Replace the escaped version with the character
        obj[key] = obj[key].replace(new Regex(escaped, "g"), char);
    }
}

Затем оно используется так ...

app.js

const { check } = require("express-validator");
const unescape = require("./path/to/unescape/middleware.js");

app.get(
    "/some/route", 
    check("profile.about").trim().escape(), 
    unescape("'", "'"), 
    require("./path/to/router/handler.js")
);

Я считаю, что это должно решить проблему ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...