使用Mongodb的ObjectID作为文档ID


Using Mongodb ObjectID as a document ID?

我想用mongoDB做一个板。

我想用ObjectID分配文档ID

如果用户可以通过http://www.example.com/4easdf123123访问文档页面,其中"4easdf123123"是mongoDB的ObjectID。

如果我在URL中使用和显示mongo ObjectID并将其用作文档id,是否存在任何可能的安全威胁?

与mongoDB分配文档ID的任何建议?

这看起来不像MongoDB的ObjectID——ObjectID是12字节的二进制数据,当呈现为十六进制字符串(通常在URL中使用它的方式)时,它将是24个字符长。我假设您正在使用官方的PHP Mongo Driver,在这种情况下,MongoId类的构造函数将忽略无效值并为您生成一个新值。在任何情况下,最好让驱动程序为您生成一个ObjectID/MongoId,因为它将以避免冲突的方式这样做。

至于在url中使用它的安全性,应该没问题。当然,你应该使用通常的预防措施执行的代码,以确保当前用户可以访问视图对象显示,等等,但没有更多的安全使用ObjectID的风险比任何其他数据库URL标识符(字符串、整数、等),通常较少,ObjectID没有语义价值(而这样的字符串"adminuser"URL可能会表达,URL与用户与权限提升)。