【发布时间】:2021-02-09 22:09:10
【问题描述】:
我正在运行一些代码,并且质疑 API 端点上应用的验证/卫生级别。 (使用 Nodejs/Express)
customerRoute.post('/signup', (req, res) => {
var email = req.body.email;
var firstName = req.body.firstName;
var lastName = req.body.lastName;
if (!validate.STRING(firstName)) {
res.apiError(messages.server.invalid_request);
} else if (!validate.STRING(lastName)) {
res.apiError(messages.server.invalid_request);
} else if (!validate.STRING(email)) {
res.apiError(messages.server.invalid_request);
} else if (!validate.EMAIL(email)) {
res.apiError(messages.shared.invalid_email);
} else {
var schemaObj = {
firstName: firstName,
lastName: lastName,
email: email
};
和自定义模块验证:
module.exports.STRING = function(str) {
if (typeof str !== 'string') {
return false;
}
return true;
}
module.exports.EMAIL = function(email) {
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
目前,可以在名称字段中添加脚本标签,这些标签会添加到数据库中。但是,尝试在电子邮件中添加“https://github.com/validatorjs/validator.js#sanitizers)中
转义 - 将 、&、'、" 和 / 替换为 HTML 实体。
这是否意味着它将允许这些标签进入数据库并且它是否适合我的需求?
提前致谢。
【问题讨论】:
标签: node.js express express-validator