在Express.js中,在会话中存储任何数据是否安全?

时间:2014-09-02 17:08:53

标签: node.js security session cookies express

我以前只使用过cookies。

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

理论上,我可以说:

req.session.authenticated = true

并测试用户是否已经过身份验证,如果密码正确则无需重新检查。

这样做安全吗? 或者是否需要存储用户名和哈希?

P.S。我使用Express 4.8.6和express-session 1.7.6

1 个答案:

答案 0 :(得分:3)

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

因此,如果我访问您的网站,您会给我一个包含23949324的Cookie。您分配给我的会话的任何数据都将存储在我的浏览器中的某个位置,我的cookie仍为23949324。 Redis是一个常见的会话商店。

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

如果你想要坚持不懈的会议,我建议express-sessions