我以前只使用过cookies。
使用cookie,我会保存用户名和哈希并在每个页面加载上执行数据库查询,以确保用户拥有正确的密码。当我发现会话不能被用户编辑时,我正准备对会话做同样的事情。
理论上,我可以说:
req.session.authenticated = true
并测试用户是否已经过身份验证,如果密码正确则无需重新检查。
这样做安全吗? 或者是否需要存储用户名和哈希?
P.S。我使用Express 4.8.6和express-session 1.7.6
答案 0 :(得分:3)
express-session不会在Cookie中存储任何工作数据。相反,它将一个uuid存储在cookie中,然后将该uuid与会话存储中的数据匹配(默认为内存中)。
因此,如果我访问您的网站,您会给我一个包含23949324
的Cookie。您分配给我的会话的任何数据都将存储在我的浏览器中的某个位置,我的cookie仍为23949324
。 Redis是一个常见的会话商店。
你可以做req.session.creditcard = "4186xxxxxxxxxxx2"
,这在技术上是安全的,至少在cookie领域是这样。实际上,您可能不应该将信用卡数据明文存储在会话存储中。
如果你想要坚持不懈的会议,我建议express-sessions。