将 mongo-db objectId 暴露给前端真的是安全问题吗?

问题描述 投票:0回答:1

我目前正在构建一个电子商务应用程序,其中的购物车存储在 localStorage 中。

为了提高在线支付的安全性,我想在将商品价格发送到支付平台之前先在后台查看我的商品价格。

我的物品的价值并不唯一:某些物品如果属于不同的类别,则可以具有相同的价值。 这就是我想将 ObjectId 存储在我的购物车 (localStorage) 中并将所有这些 objectId 发送到我的后端以便轻松查看价格的原因。

但我读到,向用户公开数据库 ID 是一种不好的做法。

我的问题是:这真的是一种不好的做法吗?为什么 ?如何在不增加任何复杂性的情况下以不同的方式做到这一点?

感谢您的帮助

mongodb mongoose payment objectid
1个回答
0
投票

一个 ObjectID 包含 3 个内容:

  • 创建 ObjectID 的时间(自纪元以来的秒数)
  • 进程启动时设置的 5 字节随机值。这是创建ObjectID的进程,通常是客户端/应用程序机器
  • 3 字节计数器,初始化为随机值,并针对该客户端创建的每个 ObjectID 递增

MongoDB集合中的_id值必须是唯一的,因此无论它是否包含ObjectID,它都唯一标识集合中的单个文档。

在 MongoDB 中暴露 _id 值的风险并不比在任何其他数据库中暴露唯一主键的风险更大或更小。

公开任何类型的 ObjectID,而不仅仅是在 _id 字段中,都会泄漏该值的创建时间。这是否是一个问题将在很大程度上取决于上下文。

如果潜在问题是 ObjectID 中包含的时间戳,请使用其他方法生成要在 _id 字段中使用的唯一值。

© www.soinside.com 2019 - 2024. All rights reserved.