Java 在DOM中使用mongodb对象的_id值是一个好主意吗?

Java 在DOM中使用mongodb对象的_id值是一个好主意吗?,java,node.js,mongodb,dom,mongoose,Java,Node.js,Mongodb,Dom,Mongoose,我正在学习mongoDB(和mongoose)(在express服务器上)。我有一个包含多个对象数组的数据库。(大概是这样的): 对象具有_id属性。(59613f576db598107269eea7、59613f576db598107269eea8、59613f576db598107269eea9、59613f576db598107269eeaa) 我的计划是这样做(对访问者可见): 如果我页面的访问者知道这些密钥,他能做什么?他们能告诉我数据库中对象的数量吗?它们有没有告诉我们它们被储存

我正在学习mongoDB(和mongoose)(在express服务器上)。我有一个包含多个对象数组的数据库。(大概是这样的):

对象具有_id属性。(59613f576db598107269eea7、59613f576db598107269eea8、59613f576db598107269eea9、59613f576db598107269eeaa)

我的计划是这样做(对访问者可见):



如果我页面的访问者知道这些密钥,他能做什么?他们能告诉我数据库中对象的数量吗?它们有没有告诉我们它们被储存的时间

对象id是集合中的12字节内部id,并公开以下信息:

  • 4字节,表示自历元起的秒数
  • 3字节机器标识符
  • 2字节进程id
  • 3字节计数器
这可以继续读下去

这是一个安全风险,因为您正在将此信息泄露给internet上的潜在攻击者

正如一位评论者所说,最好设计一个主键,使关键字段具有实际意义


在MongoDB中,可以定义自己的对象id,但不推荐这样做。

可能重复这一点是个坏主意。将原始数据库id泄漏给攻击者-然后攻击者可以使用该id发送错误请求。除非您在服务器端有很好的验证,否则这将导致数据库注入攻击。使用具有商业意义的合成id。谢谢。这是有道理的。但是我怎么能轻易实现我的计划呢?我有3个输入,当输入改变时,我想在文本数组中编辑正确的值。到目前为止,我一直在使用SQL,“自动增量”是SQL中的解决方案。“sha-1散列ObjectID”在您的操作中有用吗?或者设置一个新的主键(textID的值为0,1,2,3,4…)如果这3个值是不同的,那么您可以使用该值作为键。或者,也可以使用计数器。我建议你问一个新问题,如果你需要帮助的话。
{texts: [{s: "a"}, {s: "b"}, {s: "c"}]}
<input id="59613f576db598107269eea7" value="a" />
<input id="59613f576db598107269eea8" value="b" />
<input id="59613f576db598107269eea9" value="c" />