最近有人告诉我,在URL中使用mongodb_id字段是不安全的.我想知道这是不是真的.

我的网站仅限于注册用户,每个用户都有自己的URL端点,其中包含来自mongo的id.这是典型的mongodb_id字段——a SHA1.好吧,这个id是不可用的,即使有人点击了其他人的id,我的应用程序中基于会话的身份验证也不允许访问.除了应用程序本身,没有人可以直接访问数据库.

我很想知道我是否遗漏了什么.

编辑:澄清问题.(mongodb对象不是Sha1)

推荐答案

MongoDB中的_id字段(默认情况下)为ObjectID类型.它是not a SHA1.

它的字符串表示(比如4ed7cbfd1d96406ca0000015)当然是URL安全的.我在任何地方都使用它.

我的意思是,把它expose 在任何地方都是安全的,在那里你可以放置一个常规的int标识符(/products/3/users/42或其他什么).

在你的网站上,你应该判断用户是否已登录,以及他是否有权访问给定的URL.你不应该盲目地允许用户访问带有objectid的url,仅仅因为它们(id)不容易猜测(尽管它们比SHA1容易)

Mongodb相关问答推荐

字段$set聚合导致错误美元($)前缀字段$concatArrays对于存储无效"

从MongoDB中的嵌套数组中提取找到的值及其索引

Next js、MongoDB和Prisma.包括不为相关字段工作

根据参考图计算子文档列表的最大值

Tableau 与 Mongo DB Atlas by MongoDB 的连接缓存问题

使用特定关键字和邻近度进行查询和过滤

从MongoDB迁移到PostgreSQL:为PostgreSQL编写聚合管道查询

Spring Boot 升级后未映射 Mongo 模板结果

如何将以下聚合查询转换为 bson 并在 golang 中执行

哪种 NoSQL DB 最适合 OLTP 金融系统?

Mongodb插入没有_id字段的文档

通过 Spring Boot 应用程序访问 mongodb 时的身份验证错误

无法从 javascript 打印 BSON 对象

插入违反唯一索引的 MongoDB 文档时如何捕获错误?

Mongo按实际上是数字的字符串值排序

Mongo:无法在 src/mongo/shell/mongo.js:145 连接到服务器 127.0.0.1:27017

MongoDB 范围查询中 $lt 和 $gt 的顺序

RoboMongo:不显示所有文档

MongoError:failed to connect to server [localhost:27017] on first connect

MongoDB 引用的最佳实践