php - 使用 Mongodb ObjectID 作为文档 ID?

标签 php mongodb mongodb-php

我正在尝试用 mongoDB 制作一个板。

我想用 ObjectID 分配文档 ID。

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

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

对于使用 mongoDB 分配文档 ID 有什么建议吗?

最佳答案

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

至于在您的网址中使用它的安全性,您应该没问题。当然,您应该使用有关实现代码的常规预防措施来确保当前用户有权查看正在显示的对象等,但是在 URL 中使用 ObjectID 不会比任何其他数据库标识符(字符串、整数等),而且通常更少,因为 ObjectID 没有语义值(而 URL 中的“adminuser”之类的字符串可能表明该 URL 与具有提升权限的用户相关)。

关于php - 使用 Mongodb ObjectID 作为文档 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072680/

相关文章:

php - 如何将 Bootstrap 导航栏转换为 wordpress

php - 从 MYSQL 数据库中查找并显示字符串?

php - mongodb 'document'变量在PHP中定义

MongoDB map-reduce 速度慢并且内存不足

mongodb - 在嵌套字段上创建索引

php - RockMongo fatal error

php - 使用 sha1(md5($password)) 是否安全,有什么区别吗?

php - 将 YAML 文件转换为 PHP 文件

javascript - 类型错误 : Model is not a Constructor

mongodb - Mgo 插入命令不创建数据库或插入文档