Node.js & mongoose:是否可以检测用户请求是否包含架构定义中不存在的字段?
Node.js & mongoose: Is it possible to detect if a user request includes a field that doesn't exist in a schema definition?
Node.js & mongoose:是否可以检测用户请求是否包含模式定义中不存在的字段?
如果发生这种情况,我想检测它并对有问题的 IP 地址采取措施,因为它本质上可能是恶意的。以上可能吗?
joi validate function,将 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
}
Node.js & mongoose:是否可以检测用户请求是否包含模式定义中不存在的字段?
如果发生这种情况,我想检测它并对有问题的 IP 地址采取措施,因为它本质上可能是恶意的。以上可能吗?
joi validate function,将 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
}