【问题标题】:In Express.js, is it safe to store any data in sessions?在 Express.js 中,在会话中存储任何数据是否安全?
【发布时间】:2014-10-27 00:50:58
【问题描述】:

我习惯于只使用 cookie。

使用 cookie,我会保存用户名和哈希,并在每次页面加载时执行数据库查询,以确保用户拥有正确的密码。我正要对会话做同样的事情,当我想到会话不能被用户编辑时。

理论上,我可以说:

req.session.authenticated = true

只需测试用户是否已通过身份验证,无需重新检查密码是否正确。

这样做安全吗? 还是需要保存用户名和hash?

附:我正在使用 Express 4.8.6 和 express-session 1.7.6

【问题讨论】:

    标签: node.js security session cookies express


    【解决方案1】:

    express-session 不会在 cookie 中存储任何工作数据。相反,它将 uuid 存储在 cookie 中,然后将该 uuid 与会话存储中的数据匹配(默认为内存中)。

    因此,如果我访问您的网站,您会给我一个包含23949324 的 cookie。您分配给我的会话的任何数据都将存储在我的浏览器之外的某个地方,我的 cookie 仍然是23949324。 Redis 是一个常见的会话存储。

    您可以使用req.session.creditcard = "4186xxxxxxxxxxx2",这在技术上是安全的,至少在 cookie 领域是这样。实际上,您可能不应该将信用卡数据明文存储在会话存储中。

    如果您想要持久会话,我推荐express-sessions

    【讨论】:

    • 非常有帮助——谢谢!
    猜你喜欢
    • 2010-12-28
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2011-07-25
    • 2013-11-04
    • 2018-05-10
    • 2011-01-01
    相关资源
    最近更新 更多