【问题标题】:advantages of express-session-mongo vs rolling your ownexpress-session-mongo 与自己滚动的优势
【发布时间】:2012-12-26 19:01:53
【问题描述】:

我是 nodejs/mongo 的新手,所以我最终推出了自己的会话中间件,因为我不知道 express-session-mongo

在我的中间件中,我将用户 ID 存储在会话中(通过 express 的会话中间件),然后在每个请求上加载登录的用户对象。我还允许用户将他们的用户/通行证存储在 httpOnly cookie 中以实现“记住我”功能。

该 npm 的文档页面还有一些不足之处。

我的问题是:那个模块和我写的相比有什么优势?我在做傻事吗?他们做的比我做的好在哪里?

【问题讨论】:

    标签: node.js mongoose session-management


    【解决方案1】:

    您的技术非常不安全。如果我只需要知道数据库中用户记录的 ID,并且我可以在会话 cookie 中使用它来成为任意用户,那么这是一个巨大的漏洞。会话 ID 应该是伪随机令牌,它们本身不包含任何数据。它们只是用于在服务器端查找数据的不可猜测的数字。对于每个会话,它们还应该是唯一的,而用户 ID 则不是。

    【讨论】:

    • 好的,很公平,但是我可以轻松地更改我的实现来解决这个小问题;) - 你是说这是该模块所做的和我所做的唯一不同的细节
    • err,我刚刚意识到我没有将 id 存储在 cookie 中。我使用 express 的会话中间件,它可能会按照您的描述进行 :)。
    • 这将是我的最后一条评论。这不适合 S/O Q&A 格式。答案是您应该阅读有关网络会话需要如何工作以及它们如何工作的信息。将用户/通行证存储在 cookie 中是一种破坏公司的事情。这些不是小细节,这些是“然后我们经历了一场不可挽回的公关噩梦,我们的业务关闭了”的细节。查看开放 Web 应用程序安全项目。 owasp.org/index.php/Main_Page
    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 2012-03-20
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2011-10-14
    相关资源
    最近更新 更多