node.js - 在 Express.js 中,在 session 中存储任何数据是否安全?

标签 node.js security session cookies express

我习惯于只使用 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/

相关文章:

java - 从文件实例化 JavaKeyStore 时遇到问题

Android session 在 IBM Websphere 服务器中丢失

php - CodeIgniter 3 - 具有 PHP 空函数的 session 项 getter

node.js - Node js (-bash : syntax error near unexpected token `"Hello World"')

javascript - 在nightmarejs中有一个foreach方法吗?

javascript - DOM 加载后的 Meteor Load Javascript 函数

ruby-on-rails - Rails 数据库 - 如何使用用户密码存储加密数据?

passwords - 存储 secret 问题的答案比存储密码更安全吗?

c# - 使用 JsConfig.ExcludeTypeInfo 时 ServiceStack session 不起作用

javascript - 从 pug 读取环境变量