最近,我们将我们的Laravel应用程序从5.6升级到了Laravel 8.18.1。我们在RouteServiceProvider.php中使用cookie解密。
HomeController.php
队列(“信道”,“移动”,eyJpdiI6IjJVTGFzZHdEOXpjMk9VTGFFYmlSbXc9PSIsInZhbHVlIjoid0djMW9zbThWOXFQTk5aVXBDNmJBdz09IiwibWFjIjoiZGM4M2U1YTY0ZjVkNTE4NjBlNzg4NTZiNzhkNjdjYzcyODUzZWU1ZWMzNjdkNGNlMTgyZGIwNmQ4NjYzOWM3MSJ9 );//信道加密值=
在Laravel5.6中,它直接将哈希解密为一个值。
RouteServiceProvider.php
$encrypter = app(\Illuminate\Contracts\Encryption\Encrypter::class);
$channel_cookie = $encrypter->decrypt(Cookie::get('channel')); // result "mobile"在Laravel8.18.1中,它用垂直条将哈希解密为一个值。
RouteServiceProvider.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这是在Laravel 8中解密cookie的安全解决方案吗?
发布于 2021-06-29 10:05:56
你可以在这份安全公告中找到你的问题的原因。
https://blog.laravel.com/laravel-cookie-security-releases
代码是laravel做的,这个操作是在下面链接的框架源文件中进行的
https://github.com/laravel/framework/blob/8.x/src/Illuminate/Cookie/CookieValuePrefix.php
在我们的场景中,我们用两个词实现了类似于原始代码的东西: cookie名称被加密,并以|作为分离字符添加到cookie值中。
https://stackoverflow.com/questions/65247093
复制相似问题