APP_KEY - ключ, яким Laravel шифрує й підписує дані.
Що від нього залежить:
- шифровані cookie, зокрема сесійна;
Crypt::encrypt()і кастencryptedу моделях;- підписані URL (
URL::signedRoute()); - зашифровані завдання черги (
ShouldBeEncrypted).
Паролі від нього не залежать - вони хешуються bcrypt чи argon2, а не шифруються.
Якщо ключ змінити: усі сесії завершаться (cookie не розшифруються), підписані посилання перестануть працювати, а зашифровані колонки в базі стане неможливо прочитати.
Як змінити без цього: старий ключ переносять у APP_PREVIOUS_KEYS. Laravel шифрує новим, а розшифровує по черзі новим і попередніми.
Якщо ключ витік - зловмисник може підробляти cookie й підписані URL, розшифрувати дані з бази. Тому:
- згенерувати новий ключ, старий - тимчасово в
APP_PREVIOUS_KEYS; - перешифрувати дані з кастом
encryptedновим ключем; - прибрати старий ключ з
APP_PREVIOUS_KEYS.
Ключ не комітять у репозиторій і не логують; для .env у репозиторії є php artisan env:encrypt.