ID(来自mongo的ObjectIds)是否可以在URL中使用?

Rak*_*Pai 15 security url mongodb

我最近被告知在URL中使用mongodb _id字段是不安全的.我想知道这是不是真的.

我的网站仅限注册用户,每个用户的URL端点都包含来自mongo的ID.这是典型的mongodb _id字段 - SHA1.AFAIK,id是不可取的,即使有人点击别人的id,我的应用程序中基于会话的身份验证也不允许访问.除应用程序本身外,没有人可以直接访问数据库.

我很想知道是否有任何我想念的东西.

编辑:澄清的问题.(mongodb ObjectID不是SHA1)

Ser*_*sev 19

_idMongoDB中的字段(默认情况下)是ObjectID类型.它不是 SHA1.

它的字符串表示(4ed7cbfd1d96406ca0000015当然,就像URL安全一样.我到处使用它.

我的意思是,它是安全的无处不在揭露它,你会放一个普通INT标识符(/products/3/users/42或其他).

在您的站点上,您应该检查用户是否已登录以及他是否有权访问给定的URL.您不应该盲目地允许用户访问其中包含ObjectID的URL,只是因为它们(ID)不容易猜测(但它们比SHA1更容易)


小智 6

在 URL 中使用看似随机的字符串作为 _id(或创建 guid)而不是数字是个好主意。如果您有公共 API、user/1001、user/20032,它只是乞求黑客猜测下一个数字并获取随机用户信息。