PHP自定义会话处理程序 - 处理session_regenerate_id

时间:2015-09-13 22:44:07

标签: php session cookies

我正在编写一个自定义会话处理程序,它将加密存储的会话数据。密钥将在运行时生成并存储在cookie中(使用session_get_cookie_params()中的设置)。

这一切都相当简单,但是我应该在重新生成会话ID时重新生成加密密钥以提供针对固定攻击的保护 - 但是当发生这种情况时,no hook in the session handler API会调用我的代码。

一个潜在的解决方案是查看sessionid在读取和写入会话之间是否发生了变化,但是在发送标头之后可能会发生会话 - 因此我无法使用新密钥设置新的cookie值。

还有其他方法可以推断调用session_regenerate_id()的时间吗?据推测,现有会话已关闭并创建了一个新会话 - PHP再次调用handler :: open()吗?

我还没有想过另一个(否则是透明的)解决方案吗?

更新

奇怪的是,session_set_save_handler的文档有一个参数,似乎可以提供我正在寻找的内容。但是我的PHP 5.4.10安装无法识别额外的参数(在5.5.1中引入)。

session_regenerate_id()

不会调用会话接口(在5.4.10上)

0 个答案:

没有答案
相关问题