可以通过session_regenerate保护Laravel应用程序中的会话固定攻击吗?

时间:2018-09-13 15:00:48

标签: php laravel security session

我正在具有登录功能的laravel应用中使用会话。

会话存储在数据库中。

我的应用会话生成了会话名称“ laravel_session”。

也许是默认名称。(我在chrome调试器中检查了它)。

我认为这会导致会话固定。 因此,我在Loggin过程之后使用session-> regenerate()。 但是,它再次生成“ laravel_session”。正在工作吗? 我在session-> regenerate()之后检查了会话表,发现“ id”列已更改。

2 个答案:

答案 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();