重新生成会话ID是否有助于防止固定、劫持或两者兼而有之


Does regenerating a session ID help prevent fixation, hijacking or both?

重新生成会话ID的策略只对通过会话固定防止会话劫持有用,这是真的吗?如果没有,重新生成id如何帮助防止会话劫持?

这个流行的答案建议经常更改会话ID,因为:

如果攻击者确实劫持了会话,你不希望他们使用会话太久。"

但是,如果攻击者已经劫持了会话,他们不会只收到新的会话ID吗?

这将是一个竞赛条件。您将有两个以上的用户共享相同的会话ID。在某个时刻,您的代码决定重新生成ID,这将把新ID发送给其中一个用户。如果攻击者侥幸逃脱,并且他们的"命中"是获得重新生成ID的,那么他们现在将处于清除状态,并完全控制该会话。

如果实际用户获得了重新生成的ID,那么攻击者现在只剩下一个无效的会话ID,他们将不得不尝试劫持新生成的ID并重新开始。