我在具有登录功能的Laravel应用程序中使用会话。
会话存储在数据库中。
我的应用会话生成会话名称"laravel_session"。
也许,它是默认名称。(我在 chrome 调试器中检查了它。
我认为它会导致会话固定。
因此,我在登录过程后使用session->regenerate()
。
但是,它会再次生成"laravel_session"。它有效吗?session->regenerate()
后我检查了会话表,发现"id"列已更改。
session_name()
(命名cookie(和session_id()
(应该是随机的,不可预测的值(之间存在巨大差异。
您的会话名称是公共知识。会话 ID 需要保密。
(可以把它想象成一对key => value
。
无论如何,session_regenerate_id(true);
和use_strict_mode
配置指令的目的是缓解会话固定问题。当用户更改其权限级别(登录、注销等(时,应始终重新生成会话 ID。
> Laravel已经包含针对固定的内置保护,以及一个内置函数供您自己完成:
https://laravel.com/docs/5.6/session
如果您使用的是内置登录控制器,Laravel会在身份验证期间自动重新生成会话ID;但是,如果您需要手动重新生成会话ID,则可以使用重新生成方法。
$request->session()->regenerate();