使用数据库ID作为restful service id暴露威胁?

时间:2013-05-02 02:20:00

标签: mongodb rest

我有一个文件的宁静服务,文件存储在mongodb中,文件的restful api是/ document /:id,最初:api中的id是使用mongodb的对象id,但是我想知道deos这种方法揭示了数据库ID,并暴露了潜在的威胁,我是否应该用假名id替换它。

如果需要将其替换为假名id,我想知道是否有一种算法方法让我来回转换对象id和假名id而不需要太多计算

1 个答案:

答案 0 :(得分:1)

首先,ObjectID中没有“数据库ID”。

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

  1. 大多数情况下,ObjectID实际上是在客户端生成的,而不是服务器生成的(虽然它可以)。因此,这通常是应用程序服务器的计算机标识符,而不是数据库
  2. 3字节机器ID是机器主机名(md5)散列的前三个字节,或者是mac /网络地址,或者是虚拟机ID(取决于具体的实现),因此它可以'被反转回任何特别有意义的事情
  3. 考虑到上述情况,您可以看到担心暴露信息并不是真正的问题。

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

相关问题