我习惯于只使用 cookie。
使用 cookie,我会保存用户名和哈希值,并在每次加载页面时执行数据库查询,以确保用户拥有正确的密码。我正要对 session 做同样的事情,这时我突然想到用户不能编辑 session 。
理论上,我可以说:
req.session.authenticated = true
并且只测试用户是否已通过身份验证,而无需重新检查密码是否正确。
这样做安全吗? 或者是否需要存储用户名和哈希值?
附言我正在使用 Express 4.8.6 和 express-session 1.7.6
最佳答案
express-session不在 cookie 中存储任何工作数据。相反,它会在 cookie 中存储一个 uuid,然后将该 uuid 与您 session 存储中的数据(默认为内存中)相匹配。
因此,如果我访问您的网站,您会给我一个包含 23949324
的 cookie。您分配给我的 session 的任何数据都将存储在我的浏览器之外的某个地方,我的 cookie 仍然是 23949324
。 Redis 是一种常见的 session 存储。
您可以执行 req.session.creditcard = "4186xxxxxxxxxxx2"
这在技术上是安全的,至少在 cookie 领域是这样。实际上,您可能不应该在 session 存储中以明文形式存储信用卡数据。
如果您想要持久 session ,我建议您使用 express-sessions .
关于node.js - 在 Express.js 中,在 session 中存储任何数据是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25628755/