0

我已经用我自己的本机会话实现替换了有问题的 CodeIgniter 会话库。

两者的行为方式相同,并在一段时间后更改会话 ID,并且都遇到相同的问题,为了这个问题,假设会话每分钟重新生成一次。

当用户查看页面并等待一分钟时,在下一个页面请求中将重新生成会话 ID。但是,当用户请求超时或他们“双重刷新”页面时会出现问题。浏览器不会收到新的 cookie,因此会在下一个请求时启动新会话。因此,如果用户在重新生成 ID 时点击刷新并快速连续再次点击刷新,他们将失去会话。

我知道更改会话 ID 是防止会话固定的好主意,但是有什么办法可以解决这个问题吗?显然,增加重新生成 ID 的时间将限制这种情况发生的可能性,但它似乎仍有可能发生。

谢谢你的帮助!

4

1 回答 1

1
  1. 将列“previous_session_ID”添加到您的数据库
  2. 将当前会话 ID 移动到 'previous_session_ID' - 然后生成新的会话 ID 并将其存储在 current_session_ID
  3. 当用户尝试使用会话 ID 访问您的页面时 - 检查当前 ID 和“previous_session_ID”

问题解决了——他们现在可以进行“双重刷新”并且仍然可以访问该页面。

于 2013-07-11T12:14:10.533 回答