如果将api调用绑定到对象的id,是否可以简单地强制使用此api来获取所有对象?如果你想到MySQL,这对于增量整数id来说是完全可能的.但MongoDB怎么样?ids可以猜到吗?例如,如果您知道一个ID,是否很容易猜到其他(下一个,上一个)ID?
谢谢!
Ada*_*ord 18
2019年1月更新:正如评论中所述,以下信息在版本3.2之前是正确的.版本3.4+ 更改了规范,以便将机器ID和进程ID合并为单个随机5字节值.这可能会使得更难找出文档的来源,但它也简化了生成并降低了冲突的可能性.
原答案:
对于塞尔吉奥的答案+1,在回答他们是否可以被猜到的时候,他们不是哈希,他们是可预测的,所以如果有足够的时间,他们可以被"暴力强迫".可能性取决于ObjectID的生成方式以及您如何进行猜测.首先,请阅读此处的规范:
让我们一块一块地分解:
扩大一点来源.ObjectID可以通过以下方式生成:
因此,有些事情可以让它们更难以单独猜测,但是如果没有大量的预见和保护措施,对于普通数据集,有效ObjectID的范围应该相当容易解决,因为它们都是前缀为时间戳(除非你以某种方式操纵它).
Ser*_*sev 15
Mongo的ObjectId从来就不是为了防止暴力攻击(或任何攻击,就此而言).它们只是提供全球唯一性.你应该不认为某些对象不能被用户访问,因为该用户不应该知道其ID.
为了实际保护您的资源,请采用其他技术.
如果您防止未经授权的访问,请在您的应用程序中放置一些授权逻辑(允许访问合法用户,拒绝其他所有人).
如果要阻止转储所有对象,请使用某种速率限制.如果适用,请结合授权.
可选阅读:GUID上的Eric Lippert.
| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |