jsonschema - Fastify 相当于 express-mongo-sanitize
问题描述
您好 Fastify 专家,
在 MongoDB 查询中,我可以传递各种运算符,这可能会因具有各种攻击面而危及安全方面。
所以在发送有效载荷之前,我想清理查询/过滤器/排序等。但是我认为我不需要清理请求有效载荷,因为 Mongo 无论如何都会将其存储为 BSON,因此更安全。
现在在 Express 世界中,我们曾经有express-mongo-sanitize之类的插件。
你为 Fastify 世界推荐什么开源插件来实现类似的功能?
谢谢, 普拉迪普
解决方案
你有两个选择:
- 使用模式驱逐:将
additionalProperties
as 标志添加到输入模式中,将删除您从输入中不期望的所有键
使用此代码,您可以通过以下方式提交有效负载:
{
foo: 'hello',
$where: 'cut'
}
并且$where
密钥将被删除。
const fastify = require('fastify')({ logger: true })
fastify.post('/', {
schema: {
body: {
type: 'object',
additionalProperties: false,
properties: {
foo: { type: 'string' }
}
}
}
},
async (request, reply) => {
console.log(request.body)
return request.body
})
fastify.listen(8080)
- 您链接的框架具有模块功能,您可以将其与钩子集成:
const mongoSanitize = require('express-mongo-sanitize');
fastify.addHook('preHandler', function hook (request, reply, done) {
mongoSanitize.sanitize(request.body);
done(null)
})
推荐阅读
- react-toastify - react-toastify:如何将吐司从底部向上放置
- android - Android构建错误任务':app:checkDebugDuplicateClasses'的执行失败
- python - 如何从对象的形式更新 time_update?
- fonts - iText7 更改表单字段的字体
- flutter-android - 在颤振中创建一个折叠的应用栏
- firebase - 向 Slack 发送 200 响应并继续运行 Firebase Cloud Function
- machine-learning - 检测器2中的训练损失没有减少
- python - ValueError:无法使用 dtype='numeric' 将字节/字符串数组转换为十进制数
- reactjs - 将 URL 绑定到给定状态的 React 组件
- postgresql - pg_dump 不排除表数据