Как проверить плохих персонажей и отменить их действие из вашего входного контента? (Запрос MySQL / Joi) - PullRequest
1 голос
/ 15 октября 2019

Я создал форму, где пользователь может ввести свою информацию. Я использую Joi для проверки содержимого формы и MySQL для связи с моей БД.

К сожалению, если мой пользователь вводит "" "во входных данных, у меня есть синтаксис ERROR из MYSQL. Как я могу изменить это автоматически? Я пытался заменить 'на \', но я не знаю, насколько это хорошо ... Я чувствую, что это не так.

Моя модель проверки не проверяет опасный символ, такой как "или \ или"Я хотел бы сохранить их в своей БД, но безопасно. Я хотел бы, чтобы мой пользователь мог ввести «Это ...», если он хочет.

Это моя модель проверки:

function validateUser(user){
    const schema = {
        firstname: Joi.string().required(),
        lastname: Joi.string().required(),
        phone: Joi.string().required(),
        bestcontact: Joi.string().min(5).max(5).required(),
        mail: Joi.string().optional().allow(null).allow(""),
        address: Joi.string().allow(null).optional().allow(""),
        suburb: Joi.string().allow(null).optional().allow(""),
        state: Joi.string().allow(null).optional().allow(""),
        postalcode: Joi.string().allow(null).optional().allow(""),
        birthday: Joi.date().allow("").allow(null),
        iduser: Joi.number().optional()
    };
    return Joi.validate(user, schema);
}

Это мой запрос SQL:

 const queryString = `INSERT INTO user (\`iduser\`,\`firstname\`, \`lastname\`, \`phone\`, \`mail\`, \`address\`, \`suburb\`, \`state\`, \`postalcode\`, \`birthday\`, \`bestcontact\`) VALUES ('${user.iduser}','${user.firstname}', '${user.lastname}', '${user.phone}', '${user.mail}', '${user.address}', '${user.suburb}', '${user.state}', '${user.postalcode}', '${user.birthday}', '${user.bestcontact}');`

Заранее спасибо

1 Ответ

0 голосов
/ 15 октября 2019

Если не удалось проверить, Джой делает ошибку, или вы можете проверить ошибку, как это

const result = schema.validate(body);   
    if (result.error) {
        throw result.error;
    }   
    return schema.validate(body);
}

часть вызова функции

try {
    await validateUser(user);
    //success to validate
} catch(error) {
    //validate error(failed to validate)
}
...