【发布时间】:2021-03-22 14:49:42
【问题描述】:
最近,我们将 Laravel 应用程序从 5.6 升级到了 Laravel 8.18.1。我们在RouteServiceProvider.php中使用cookie解密。
HomeController.php
Cookie::queue("channel", "mobile", 60241); // 通道加密 价值 = eyJpdiI6IjJVTGFzZHdEOXpjMk9VTGFFYmlSbXc9PSIsInZhbHVlIjoid0djMW9zbThWOXFQTk5aVXBDNmJBdz09IiwibWFjIjoiZGM4M2U1YTY0ZjVkNTE4NjBlNzg4NTZiNzhkNjdjYzcyODUzZWU1ZWMzNjdkNGNlMTgyZGIwNmQ4NjYzOWM3MSJ9 P>
在 Laravel 5.6 中,它直接将哈希解密为一个值。
RouteServiceProvider.php
$encrypter = app(\Illuminate\Contracts\Encryption\Encrypter::class);
$channel_cookie = $encrypter->decrypt(Cookie::get('channel')); // result "mobile"
在 Laravel 8.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 的安全解决方案吗?
【问题讨论】:
-
您找到了更好的方法吗?这是一种非常奇怪的解密方式,但我也找不到其他解决方案。
标签: php encryption laravel-8