Joomla如何重新生成会话ID以防止会话固定

时间:2011-02-17 13:03:43

标签: php session joomla joomla1.5

Joomla 1.5.15

我需要在用户登录时更新会话ID,以防止在1.5.15中可以进行会话固定。我意识到我可以更新到最新版本并将被修复,但由于各种原因我现在无法更新。

我有一个处理登录的身份验证插件(我不使用#__users表),在我的插件中我使用Web服务验证用户/传递。我希望能够在插件中重新生成会话ID。

我尝试过简单的session_regenerate_id(),它会更新它,但我丢失了所有会话数据,无法登录。我知道Joomla使用自己的会话类,但我不知道是否有这样的功能。

由于

1 个答案:

答案 0 :(得分:2)

使用JSession::fork()

$session =& JFactory::getSession();
$session->fork();

它在背景中真正做到的只是session_regenerate_id(),但它确保会话在此之前首先处于活动状态。你不应该通过这样做丢失任何数据(如果你这样做,可能会在某处出现错误)......

对于Joomla 2.5和Joomla 3.5会话固定,您可以参考为session fixation in Joomla 2.5建议的解决方案