из laravel документы
Application Key The next thing you should do after installing Laravel is set your application key to a random string. If you installed Laravel via Composer or the Laravel installer, this key has already been set for you by the php artisan key:generate command.
Typically, this string should be 32 characters long. The key can be set in the .env environment file. If you have not renamed the .env.example file to .env, you should do that now. If the application key is not set, your user sessions and other encrypted data will not be secure!
Что я знаю о ключе приложения: если ключ приложения не задан, обычно возникает исключение.
ну зачем ты это делаешь? @Kyslik
Таким образом, каждый сеанс недействителен :), кроме того, что из config/app.php: Этот ключ используется службой шифрования Illuminate ...
Я не знаю, почему это очень хороший вопрос из того, что я знаю, что он используется для шифрования файлов cookie и данных сеанса. Может быть, он играет некоторую роль в безопасности api, но я не знаю, я никогда не пытался узнать больше, но теперь, когда вы задали этот вопрос, мне любопытно
Взгляните на этот общий вопрос сообщества.
@Viney нет, он не используется в безопасности API, если - мы говорим об использовании Заграничный пасспорт, пакет генерирует свои собственные сертификаты, насколько мне известно.






Как мы видим, он используется в EncryptionServiceProvider:
public function register()
{
$this->app->singleton('encrypter', function ($app) {
$config = $app->make('config')->get('app');
// If the key starts with "base64:", we will need to decode the key before handing
// it off to the encrypter. Keys may be base-64 encoded for presentation and we
// want to make sure to convert them back to the raw bytes before encrypting.
if (Str::startsWith($key = $this->key($config), 'base64:')) {
$key = base64_decode(substr($key, 7));
}
return new Encrypter($key, $config['cipher']);
});
}
Таким образом, каждый компонент, использующий шифрование: сессия, шифрование (пользовательская область), токен csrf, выигрывает от app_key.
На остальные вопросы можно ответить «как работает шифрование» (AES), просто откройте Encrypter.php и подтвердите, что Laravel использует AES под капотом и кодирует результат в base64.
Более того, мы можем увидеть, как все это делается с помощью tinker:
➜ laravel git:(staging) ✗ art tinker
Psy Shell v0.8.17 (PHP 7.1.14 — cli) by Justin Hileman
>>> encrypt('Hello World!')
=> "eyJpdiI6ImgzK08zSDQyMUE1T1NMVThERjQzdEE9PSIsInZhbHVlIjoiYzlZTk1td0JJZGtrS2luMlo0QzdGcVpKdTEzTWsxeFB6ME5pT1NmaGlQaz0iLCJtYWMiOiI3YTAzY2IxZjBiM2IyNDZiYzljZGJjNTczYzA3MGRjN2U3ZmFkMTVmMWRhMjcwMTRlODk5YTg5ZmM2YjBjMGNlIn0 = "
Note: I used this key:
base64:Qc25VgXJ8CEkp790nqF+eEocRk1o7Yp0lM1jWPUuocQ=to encryptHello World!
После расшифровки полученного результата (можно попробовать расшифровать свой cookie с помощью session):
{"iv":"h3+O3H421A5OSLU8DF43tA= = ","value":"c9YNMmwBIdkkKin2Z4C7FqZJu13Mk1xPz0NiOSfhiPk = ","mac":"7a03cb1f0b3b246bc9cdbc573c070dc7e7fad15f1da27014e899a89fc6b0c0ce"}
чтобы понять выше json (iv, value, mac), вам необходимо понимать AES:
.envapp.php, фактически в любом отслеживаемом git файлеObvious Note: Changing application key has no effect on hashed passwords since hashing algorithms do not require encryption keys.
действительно подробный ответ
Пожалуйста, объясните отрицательные голоса. чтобы я мог удалить этот пост в случае необходимости. Благодарность