我正在具有登录功能的laravel应用中使用会话。
会话存储在数据库中。
我的应用会话生成了会话名称“ laravel_session”。
也许是默认名称。(我在chrome调试器中检查了它)。
我认为这会导致会话固定。 因此,我在Loggin过程之后使用session-> regenerate()。 但是,它再次生成“ laravel_session”。正在工作吗? 我在session-> regenerate()之后检查了会话表,发现“ id”列已更改。
答案 0 :(得分:2)
session_name()
(将其命名为Cookie)和session_id()
(应是随机的,不可预测的值)之间存在巨大差异。
您的会议名称是公共知识。会话ID需要保密。
(将其视为key => value
对。)
无论如何,session_regenerate_id(true);
和use_strict_mode
配置指令的作用是减轻会话固定问题。当用户更改其特权级别(登录,注销等)时,您应该始终重新生成会话ID。
答案 1 :(得分:1)
Laravel已经包含针对会话固定的内置保护,以及一个内置功能供您自己执行:
https://laravel.com/docs/5.6/session
如果您使用内置的LoginController,Laravel会在身份验证过程中自动重新生成会话ID;但是,如果需要手动重新生成会话ID,则可以使用regenerate方法。
$request->session()->regenerate();