【问题标题】:Joomla how to regenerate the session ID to prevent session fixationJoomla 如何重新生成会话 ID 以防止会话固定
【发布时间】:2011-02-17 13:03:43
【问题描述】:

Joomla 1.5.15

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

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

我尝试了简单的 session_regenerate_id() 来更新它,但我丢失了所有会话数据并且无法登录。我知道 Joomla 使用它自己的会话类,但我不知道是否有一个函数可以做到这一点。

谢谢

【问题讨论】:

  • 我强烈建议更新到 1.5.22。自 1.5.15 以来的所有版本都是安全版本,您的网站很容易受到攻击。

标签: php session joomla joomla1.5


【解决方案1】:

使用JSession::fork()

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

它真正所做的只是在后台session_regenerate_id(),但它会确保会话在它开始之前首先处于活动状态。这样做不应该丢失任何数据(如果这样做,可能某处存在错误)...

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

【讨论】:

  • 试过了,它确实更新了ID但无法登录,会话数据似乎丢失了。在插件中,如果用户/密码良好,我将响应状态设置为 JAUTHENTICATE_STATUS_SUCCESS 然后我调用 fork() 然后我返回 true 表示登录成功。
  • @user5953:它确实让你登录,你不重新生成 session_id 吗?
猜你喜欢
  • 2015-04-03
  • 2011-12-29
  • 2011-08-19
  • 2012-02-20
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 2014-02-06
  • 2019-08-13
相关资源
最近更新 更多