MongoDB ObjectID对于会话ID是安全的

时间:2016-05-16 22:04:04

标签: mongodb session-variables session-cookies

我正在为Happstack服务器创建会话系统,我使用mongoDB进行持久存储。我想知道MongoDB ObjectID是否可以安全地用作会话ID。

3 个答案:

答案 0 :(得分:2)

一般来说,MongoDB ObjectID是全球唯一的,因此如果您担心碰撞,则是安全的。

但是,如果您正在谈论会话ID,那么问题实际上取决于您是否在加密客户端以及如何加密。通常,这些问题的答案应为作为对客户端不透明的加密Cookie值。通常,您使用的任何Web服务器都有实用程序来帮助解决此问题。

同样,如果您只是想确保自己拥有唯一身份证,并希望将对象ID用作来源,那么您就会很好。

答案 1 :(得分:1)

MongoDB ObjectID正好是12个字节[1]长,而会话ID可能实现为32个字节[2]长。不同之处在于,如果攻击者是MongoDB ObjectID,则更容易猜测您的会话ID,但是您的会话安全性通常不仅仅依赖于难以猜测的会话ID。

然而,有一个想法建议会话ID应该至少16字节长[3]。在这种情况下,vanilla 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

答案 2 :(得分:0)

切勿将MongoDB ObjectID用作会话标识符!

很容易猜测,您可以接管某人的会话。您只需要等到有人登录并轻松破解他的会话ID即可。

我在这篇文章中写过关于这种漏洞的文章:https://medium.com/securing/why-is-randomness-important-especially-in-the-world-of-cryptocurrencies-part-1-ebd3343c7b55