xyo*_*nme 6 php encryption laravel-8
最近,我们将 Laravel 应用程序从 5.6 升级到 Laravel 8.18.1。我们在RouteServiceProvider.php中使用cookie解密。
HomeController.php
Cookie::queue("频道", "移动", 60 24 1); // 通道加密值 = eyJpdiI6IjJVTGFzZHdEOXpjMk9VTGFFYmlSbXc9PSIsInZhbHVlIjoid0djMW9zbThWOXFQTk5aVXBDNmJBdz09IiwibWFjIjoiZGM4M2U1YTY0ZjVkNTE4NjBlNzg4NTZiNzhkNjdjYzcyODU zZWU1ZWMzNjdkNGNlMTgyZGIwNmQ4NjYzOWM3MSJ9
在 Laravel 5.6 中,它直接将哈希值解密为值。
路由服务提供商.php
$encrypter = app(\Illuminate\Contracts\Encryption\Encrypter::class);
$channel_cookie = $encrypter->decrypt(Cookie::get('channel')); // result "mobile"
Run Code Online (Sandbox Code Playgroud)
在 Laravel 8.18.1 中,它将哈希值解密为带有竖线的值。
路由服务提供商.php
$encrypter = app(\Illuminate\Contracts\Encryption\Encrypter::class);
$channel_cookie = $encrypter->decrypt(Cookie::get('channel')); // result "a86aa854d5e61e2873acd30373b6725e36fba671|mobile"
$channel_cookie = explode("|",$channel_cookie)[1]; // result mobile
Run Code Online (Sandbox Code Playgroud)
这是在 Laravel 8 中解密 cookie 的安全解决方案吗?
小智 -1
您可以在有关在 laravel 中添加 cookie 前缀的安全公告中找到问题的原因。
https://blog.laravel.com/laravel-cookie-security-releases
laravel 执行此操作的代码位于下面链接的框架源文件中
https://github.com/laravel/framework/blob/8.x/src/Illuminate/Cookie/CookieValuePrefix.php
在我们的场景中,我们实现了与原始代码类似的东西,用两个词来说:cookie 名称被加密并使用|分隔符添加到 cookie 值中。