Функция проверки joi , устанавливает флаг allowUnknown
в значение false (по умолчанию).
В вашем случае вы можете использовать эту функцию, чтобы поймать ошибку, которая возникает, когда неизвестные ключи присутствуют. В этом сценарии возникает ошибка object.unknown (учитывая, что ваша полезная нагрузка должна быть объектом).
Пример:
const Joi = require('@hapi/joi');
const joiSchema = Joi.object({
a: Joi.string().required()
});
const validationResult = joiSchema.validate({ a: "hello world", b: 2 }, { abortEarly: false });
console.log(validationResult.error.details.some(err => err.type === 'object.unknown')); // true
Используя последний оператор консоли (который выдает значение true), вы можете узнать, отправил ли пользователь недопустимое значение в полезной нагрузке. Вы можете сделать что-то вроде:
if (validationResult.error && validationResult.error.details.some(err => err.type === 'object.unknown')) {
// block the malicious IP
}