2011-12-19 32 views
13

我最近被告知,在URL中使用mongodb _id字段是不安全的。我想知道這是否屬實。ID(來自mongo的ObjectIds)可安全地在URL中使用嗎?

我的網站僅限註冊用戶,並且每個用戶的網址端點都包含來自mongo的ID。這是典型的mongodb _id字段 - 一個SHA1。 AFAIK,這個id是不可猜測的,即使有人碰到別人的id,基於會話的身份驗證在我的應用程序中也不允許訪問。除應用程序本身之外,沒有人可以直接訪問數據庫。

我很想知道是否有什麼我失蹤。

編輯:澄清的問題。 (mongodb ObjectIDs不是SHA1)

+0

相關:http://stackoverflow.com/questions/9452786/mongo-objectids-safe-to-use-in-the-wild?rq=1 http://stackoverflow.com/questions/11577450/are- mongodb-ids-guessable – Thilo 2016-09-30 00:21:24

回答

18

_id來自MongoDB的字段是(默認情況下)ObjectID類型。它是而不是一個SHA1。

而且它的字符串表示(如4ed7cbfd1d96406ca0000015是肯定的,URL安全的。我用它無處不在。

我的意思是,它是安全的無處不在揭露它,你會放一個普通INT標識符(/products/3/users/42或其他)

在您的網站上,您應該檢查用戶是否已登錄並且是否有權訪問給定的URL。您不應該盲目地允許用戶訪問其中存在ObjectID的URL,僅僅是因爲它們(ids)不容易猜到(它們比SHA1容易)

+0

這就是我的想法。另外,稍微修正了我的問題,使我看起來稍微不那麼愚蠢,關於sha1/objectid的差異。太感謝了。 – 2011-12-19 12:52:13

3

它是在URL中而不是數字中使用看似隨機的字符串作爲_id(或創建guid)是一個好主意。如果你有公共API,用戶/ 1001,用戶/ 20032它只是乞求黑客猜測下一個號碼並進入隨機用戶信息。

相關問題