私はHappstackサーバー用のセッションシステムを作成しています。永続的なストレージにはmongoDBを使用しています。私は、MongoDB ObjectIDがセッションIDとして使用するのが安全かどうか疑問に思っていました。セッションIDの安全なMongoDB ObjectID
2
A
答えて
2
一般に、MongoDBのObjectIDはグローバルにユニークであるため、衝突が懸念される場合は安全です。
しかし、あなたがセッションIDについて話しているのであれば、あなたはそれをクライアント側でどのように暗号化しているかによって問題が本当に異なります。通常、これらの質問に対する回答は、クライアントに対して不透明な暗号化されたクッキー値としてはいとである必要があります。通常、使用しているWebサーバーには、これを手助けするユーティリティがあります。
また、一意のIDを持っていることを確認しようとしていて、オブジェクトIDをソースとして使用したい場合は、適切です。
1
MongoDB ObjectIDはちょうど12バイト[1]ですが、セッションIDはおそらく32バイト[2]長く実装されています。違いは、攻撃者がMongoDB ObjectIDの場合、セッションIDを推測する方が簡単ですが、セッションセキュリティは通常、推測が難しいセッションIDを持つだけではありません。
しかし、セッションIDの長さを16バイト以上にすることをお勧めします[3]。この場合、バニラMongoDB ObjectIDはセッションIDに対して安全ではありません。
[1]。 https://godoc.org/labix.org/v2/mgo/bson#ObjectId [2]。 https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/06.2.html [3]。 https://www.owasp.org/index.php/Session_Management_Cheat_Sheet
関連する問題
- 1. ServiceStackのセッションIDは安全ですか?
- 2. 安全で安全なセッション名とは何ですか?
- 3. Java - 安全なセッション管理のベストプラクティス
- 4. MongoDBの安全でないスタートアップ
- 5. MongoDB/Java:DBObjectsの型安全性
- 6. 小さなパースIDを通常のMongoDBのObjectIDにマイグレーション
- 7. MongoDB:文書のIDを「公開」しても安全ですか?
- 8. Javaで安全なセッションCookieを読む
- 9. MongoDB $ push ObjectId
- 10. Meteor.Collection.ObjectID()とMongoDB ObjectId()
- 11. MongoDBのデフォルトのObjectId
- 12. rails - 安全なID /パスワードの作成
- 13. C#で型安全なMongoオブジェクトIDを取得するには?
- 14. mongodbデータがIDの形で再生されています:ObjectId
- 15. mongodb接続スレッドの安全性
- 16. MongoDB C#ドライバとスレッドの安全性
- 17. ObjectIdでMongoDB Node.js deleteOneがObjectIdで動作しない
- 18. mongodb-wrapperとエントリのObjectId
- 19. MongoDB ObjectIdのJSON問題
- 20. ServerSideセッションは安全ですか?
- 21. ノード+ Mongodb + ObjectIdが動作しない
- 22. mongodb $ ninでObjectIdが動作しない
- 23. セッションを安全にカウントする方法:Session_Start/End in Global.Asaxは安全で安全ですか?
- 24. Pong HTMLレンダリングとMongoDB ObjectID
- 25. ObjectIDでMongoDBコレクションを取得
- 26. Railsとのセキュアで安全でないセッション
- 27. 安全な安眠スプリングブートアプリケーション
- 28. 最も安全な方法は、PHPでセッションを作成する
- 29. セッションを使用してサイト構成を保存するのは、安全で安全な方法ですか?
- 30. AppleScript、IDでアプリを安全に終了
ObjectIDの代わりに暗号安全のランダムな値をIDとして使用する方が意味がありません。 IDの暗号化と復号化は常にパフォーマンス上の問題につながると思います。 – NatureShade
実際には、クライアントはセッションIDにアクセスできません(サーバだけがそれを読んでいます)ので、かなり高速な暗号化が必要です。 Railsの動作を確認してください。さらに、セッションストアがMongoDBのようなものに裏打ちされている場合は、ObjectIdを使用することが特に便利です(ここでも、Devise in Railsの例です)。 – TreyE