【问题标题】:Fastify equivalent of express-mongo-sanitizeFastify 相当于 express-mongo-sanitize
【发布时间】:2021-07-07 05:57:38
【问题描述】:

您好,Fastify 专家,

在 MongoDB 查询中,我可以传递各种运算符,这可能会因具有各种攻击面而危及安全方面。

所以在发送有效负载之前,我想清理查询/过滤器/排序等。但是我认为我不需要清理请求有效负载,因为 Mongo 无论如何都会将其存储为 BSON,因此更安全。

现在在 Express 世界中,我们曾经拥有 express-mongo-sanitize 之类的插件。

你为 Fastify 世界推荐了哪些开源插件来实现类似的功能?

谢谢, 普拉迪普

【问题讨论】:

    标签: jsonschema fastify


    【解决方案1】:

    你有两个选择:

    1. 使用模式驱逐:将additionalProperties 作为标志添加到输入模式中,将删除您不希望从输入中得到的所有键

    使用此代码,您可以通过以下方式提交有效负载:

    {
        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)
    
    1. 您链接的框架有一个module feature,您可以将它与钩子集成:
    const mongoSanitize = require('express-mongo-sanitize');
    fastify.addHook('preHandler', function hook (request, reply, done) {
      mongoSanitize.sanitize(request.body);
      done(null)
    })
    

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 2022-07-24
      • 2022-10-02
      相关资源
      最近更新 更多