【发布时间】:2021-06-20 13:48:20
【问题描述】:
好的,我看到了这个例子,就像 cookie 被加密了一样。
var app = express()
app.set('trust proxy', 1) // trust first proxy
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}))
这是我的问题,假设 A 和 B 坐在一起,B 复制 A 的请求,其中包括会话信息(加密的 cookie)并放入他的请求。是的,B 无法解密 cookie,但那又如何呢? 从服务器端,它检查会话信息,它对 A 和 B 使用相同的秘密。所以请求通过了。
那么从安全的角度来看,这个会话如何比 cookie 更有用?
【问题讨论】:
-
如果b期间的时间正在发送请求(A的请求)并且在这期间A关闭其浏览器,那么该会话将变得无效
-
如果您希望会话 cookie 免受网络窥探攻击,您必须通过 https 运行所有这些。因此,即使 A 坐在 B 旁边,那么 B 也无法获取 A 的 cookie,除非他们可以物理访问 A 的计算机存储并且可以从硬盘驱动器中窃取他们的 cookie,因为他们将无法从网络中窃取它们,因为https 保护。
-
@jfriend00 如果运行 https,如果黑客无法窥探,那么常规 cookie 是否与 session 一样安全?
-
服务器端会话将实际会话数据存储在服务器上 - 会话 cookie 仅允许服务器代表您访问该数据。这就是使它有用且更安全的原因。是的,如果您想将所有数据放入 cookie 本身,您可以使用常规 cookie,但这几乎没有那么灵活或强大。将持久存储添加到您的会话中,它现在成为持久的用户数据,甚至可以跨设备跟踪您,而 cookie 无法做到。
-
@jfriend00 我知道会话数据在服务器端并且很有用,但是 ppl 仍然可以从客户端窃取会话 ID(假设使用 http),那么从安全的角度来看这有什么不同呢?
标签: node.js express express-session