gpt4 book ai didi

security - MongoDB id 可以猜测吗?

转载 作者:IT老高 更新时间:2023-10-28 13:05:58 27 4
gpt4 key购买 nike

如果您将 api 调用绑定(bind)到对象的 id,是否可以简单地强制此 api 获取所有对象?如果您想到 MySQL,那么使用增量整数 ID 完全可以实现这一点。但是MongoDB呢? id可以猜吗?例如,如果你知道一个 id,是否容易猜到其他(下一个、上一个)id?

谢谢!

最佳答案

2019 年 1 月更新: 如评论中所述,以下信息在 version 3.2 之前都是正确的。 .版本 3.4+ changed the spec以便机器 ID 和进程 ID 合并为一个随机的 5 字节值。这可能会使找出文档的来源变得更加困难,但它也简化了生成过程并降低了冲突的可能性。

原答案:

对于塞尔吉奥的回答+1,就回答是否可以猜到它们而言,它们不是散列,它们是可预测的,因此只要有足够的时间,它们就可以“蛮力”。可能性取决于 ObjectID 的生成方式以及您如何猜测。为了解释,首先,请阅读此处的规范:

Object ID Spec

然后让我们逐个分解:

  • 时间戳 - 只要您大致了解数据的生成时间,就可以完全预测
  • 机器 - 这是几个选项之一的 MD5 哈希,其中一些选项比其他选项更容易确定,但高度依赖于环境
  • PID - 再次强调,这里的值不是很多,并且可以针对从已知来源生成的数据进行侦查
  • 增量 - 如果这是一个随机数而不是增量(两者都允许),那么它的可预测性较差

稍微扩展一下来源。 ObjectID 可以通过以下方式生成:

  • MongoDB 本身(但可以迁移、移动、更新)
  • 驱动程序(在任何插入或更新数据的机器上)
  • 您的应用程序(如果您愿意,可以手动插入自己的 ObjectID)

因此,您可以做一些事情来让它们更难单独猜测,但如果没有很多预先考虑和保护措施,对于正常的数据集,有效 ObjectID 的范围应该很容易计算出来,因为它们都是以时间戳为前缀(除非您以某种方式对其进行操作)。

关于security - MongoDB id 可以猜测吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com