一尘不染

什么时候以及为什么我应该使用session_regenerate_id()?

php

为什么以及何时应该session_regenerate_id()在php中使用该函数?使用后是否应该始终使用它session_start()?我读到我必须使用它来防止会话固定,这是唯一原因吗?


阅读 293

收藏
2020-05-26

共1个答案

一尘不染

什么session_regenerate_id()

就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。

它有什么作用?

它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有原始用户的完整访问权限,并且能够执行原本需要身份验证的任务。

为防止此类攻击,请在用户session_regenerate_id()成功登录时(或对于每个X请求)使用用户分配新的会话ID
。现在只有他具有会话ID,而您的旧(固定)会话ID不再有效。

session_regenerate_id()什么时候应该使用?

正如symbecean在下面的注释中指出的,会话ID必须在身份验证状态下的任何转换都必须更改,并且 只能 在身份验证转换时更改。

2020-05-26