为什么以及何时应该session_regenerate_id()在php中使用该函数?使用后是否应该始终使用它session_start()?我读到我必须使用它来防止会话固定,这是唯一原因吗?
session_regenerate_id()
session_start()
就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。
它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有原始用户的完整访问权限,并且能够执行原本需要身份验证的任务。
为防止此类攻击,请在用户session_regenerate_id()成功登录时(或对于每个X请求)使用用户分配新的会话ID 。现在只有他具有会话ID,而您的旧(固定)会话ID不再有效。
正如symbecean在下面的注释中指出的,会话ID必须在身份验证状态下的任何转换都必须更改,并且 只能 在身份验证转换时更改。