我正在使用express-validator的check函数验证用户输入,想知道是否可以排除某些字符进行测试?
check("profile.about").trim().escape()
该方法将HTML中使用的任何字符转换为它们对应的HTML实体,但是如果用户输入撇号,它会导致不良结果。是否有过滤撇号的方法可以在escape()
方法中使用?如果没有,有人有什么提示可以模仿 escape()
并且把 '
删除吗?
我正在使用express-validator的check函数验证用户输入,想知道是否可以排除某些字符进行测试?
check("profile.about").trim().escape()
该方法将HTML中使用的任何字符转换为它们对应的HTML实体,但是如果用户输入撇号,它会导致不良结果。是否有过滤撇号的方法可以在escape()
方法中使用?如果没有,有人有什么提示可以模仿 escape()
并且把 '
删除吗?
可以立即添加另一个中间件来完成这个操作...
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")
);
我相信这应该解决了这个问题...