【问题标题】:sanitation of user input nodeJs - Express用户输入nodeJs的卫生 - Express
【发布时间】: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


    【解决方案1】:

    建议您使用validator,而不是使用自定义模块进行验证和清理,它具有用于规范化电子邮件的内置功能以及多种其他操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多