2011-12-19 4 views
13

最近、URLのmongodb _idフィールドを使用するのが安全ではないと言われました。それが本当かどうか疑問に思っていた。ID(Objective from Mongo)はURLで安全に使用できますか?

私のサイトは登録ユーザに制限されており、すべてのユーザはmongoのIDを含むURLエンドポイントを持っています。それは典型的なmongodb _idフィールドで、SHA1です。 AFAIK、idは推測がつかず、たとえ誰かが他人のIDに当たったとしても、私のアプリのセッションベースの認証はアクセスを許可しません。誰もアプリケーション自体に直接アクセスすることはできません。

私に不足しているものがあるかどうか不思議です。

編集:明確な質問。 (mongodbオブジェクトIDは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

答えて

18

_idフィールドは、デフォルトでObjectIDです。 ではなく、である。

そして、その文字列表現(のような4ed7cbfd1d96406ca0000015は、確かに、URLセーフです。私はどこにでもそれを使用する。

私が意味する、あなたが通常のint型の識別子を置くところ、どこにでもそれを公開しても安全である(/products/3/users/42または何でも)。

あなたのサイトには、ユーザーがログインしているか、特定のURLにアクセスしているかどうかを確認する必要があります。推測するのは簡単ではありません(SHA1より簡単です)

+0

これは私が思ったことです。また、sha1/objectidの不一致に関して私が少しばかりばかげているように私の質問を少し修正しました。感謝万円。 –

3

It's数字ではなくむしろランダムな文字列を_id(またはGUIDを作成する)のようにURLで使用するのは良い考えです。あなたがパブリックAPI、user/1001、user/20032を持っていれば、ハッカーが次の番号を推測してランダムなユーザー情報を取得するように頼んでいます。