Mongodb 使用数据库id作为restful服务id是否会暴露威胁?

Mongodb 使用数据库id作为restful服务id是否会暴露威胁?,mongodb,rest,Mongodb,Rest,我有一个用于文档的restful服务,其中文档存储在mongodb中,文档的restful api是/document/:id,最初api中的:id使用mongodb的对象id,但我想知道,如果我想用假名id替换它,这种方法是否会泄露数据库id并暴露潜在的威胁 如果需要将其替换为假名id,我想知道是否有一种算法方法可以让我在不进行大量计算的情况下来回转换对象id和假名id。首先,ObjectID中不包含“数据库id” 我假设您的担忧来自于将3字节的机器标识符列为ObjectID的一部分这一事实。

我有一个用于文档的restful服务,其中文档存储在mongodb中,文档的restful api是/document/:id,最初api中的:id使用mongodb的对象id,但我想知道,如果我想用假名id替换它,这种方法是否会泄露数据库id并暴露潜在的威胁

如果需要将其替换为假名id,我想知道是否有一种算法方法可以让我在不进行大量计算的情况下来回转换对象id和假名id。首先,ObjectID中不包含“数据库id”

我假设您的担忧来自于将3字节的机器标识符列为ObjectID的一部分这一事实。需要注意的几点是:

  • 大多数情况下,ObjectID实际上是在客户端生成的,而不是在服务器端生成的(尽管可以)。因此,这通常是应用服务器的机器标识符,而不是数据库
  • 3字节的机器ID是机器主机名、mac/网络地址或虚拟机ID(取决于特定的实现)的(md5)散列的前三个字节,因此不能将其反转回任何特别有意义的内容
  • 考虑到上述情况,您可以看到担心暴露信息并不是一个真正的问题


    然而,即使是一个小样本,猜测有效的ObjectID也相对容易,因此如果您想避免这种类型的流量影响应用程序,那么您可能需要使用其他东西(例如ObjectID的哈希可能是个好主意),但这取决于您的需求。

    谢谢,Adam,objectID的散列符合我的需要,是一个很好的遵循