gpt4 book ai didi

node.js - 使用 Connect 混淆 session ID

转载 作者:IT老高 更新时间:2023-10-28 23:25:06 26 4
gpt4 key购买 nike

我一直在观察连续请求的 session ID,并观察到一些我无法解释的事情:

1) 当调用 req.sessionIDreq.cookies["connect.sid"] 时,值不同(它出现 request.sessionID 神奇地从其关联的响应中返回 SID - 这对我来说似乎是不可能的)。

根据我对Connect源码的理解,req.sessionID是cookie key的同义词,为什么会有区别?

2) 我第一次从 Node 服务器发出请求时,浏览器会收到一个 SID(我们称之为 SID1)。下次连接时,浏览器会发出 SID2。第三次及以后我再次​​发出 SID2。为什么node+Connect在安定下来之前会发出两个 session ID?

最佳答案

所以这就是我的结论:

1) 由于请求正在通过中间件/模块,我只能假设当前 SID 已附加到请求在登录开始之前。这将部分解释为什么 req.sessionID 可能包含 SID2,而 req.cookies["connect.sid"] 包含先前的 SID1。

一些注意事项:

  • 这种现象只有在浏览器第一次连接到新的 Node 服务器实例时才会出现。

  • 浏览器必须已连接到 Node 服务器的先前实例,该实例发出了具有相同键值的 cookie(例如 connect.sid)。

2) 在浏览了 Sesame 和 Connect 的源代码后,我意识到他们保留了他们发布的所有 session ID 的记录——我以前不知道。我怀疑这是防止 session 固定的一步。

考虑到这一点,我意识到在初始连接期间在请求中发送的 SID1 是从之前的 session cookie 中遗留下来的。 Connect 将在其 session 存储中查找与发送的 cookie 的 SID1 匹配的 session ,但由于它是 Node 服务器的新实例(这里只是内存 session ,没有持久 session ATM),因此找不到它,因此需要一个新的 SID (SID2) 将发出 - 这个要坚持。早该想到这一点的。 :)

TL;DR 预期行为。出于安全考虑,不会重复使用旧 session 中的 Cookie。

关于node.js - 使用 Connect 混淆 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4938525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com