mongodb - 使用数据库 ID 作为 Restful 服务 ID 会暴露威胁吗?

标签 mongodb rest

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

如果需要替换成假名id,请问有没有什么算法可以让我把object id和假名id来回转换,不需要太多的计算

最佳答案

首先,ObjectID中不包含“数据库id”。

我假设您的担忧是因为 the spec列出一个 3 字节机器标识符作为 ObjectID 的一部分。有几点需要注意:

  1. 大多数时候,ObjectID 实际上是在客户端生成的,而不是在服务器端生成的(尽管它可以)。因此,这通常是应用程序服务器的机器标识符,而不是您的数据库
  2. 3 字节机器 ID 是机器主机名或 mac/网络地址或虚拟机 ID(取决于特定实现)的 (md5) 散列的前三个字节,因此它可以'不要倒退到任何特别有意义的地方

考虑到上述情况,您可以看出担心泄露信息并不是真正的问题。

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

关于mongodb - 使用数据库 ID 作为 Restful 服务 ID 会暴露威胁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329353/

相关文章:

mongodb - 节点应用程序无法连接到我的 ubuntu 实例上的 mongo 镜像

rest - REST API 中的信息性与唯一生成的 ID

java - 如何返回由 Jersey Rest 中的客户端执行的 javascript 代码?

c# - Firestore REST 身份验证

json - 导出 JSON 数据并加载到关系数据库中

python - 使用 Pymongo 从 Windows 连接到 AWS 实例上的 MongoDB

rest - 我应该在这个 REST 实现中使用哪些资源?

jQuery 删除(RESTful)

mongodb - 有没有办法在 MongoVUE 中运行任意命令

mongodb - Nodejs - 正常回调与执行