Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Що захищає APP_KEY і що буде, якщо він витече чи зміниться?

APP_KEY - ключ, яким Laravel шифрує й підписує дані.

Що від нього залежить:

  • шифровані cookie, зокрема сесійна;
  • Crypt::encrypt() і каст encrypted у моделях;
  • підписані URL (URL::signedRoute());
  • зашифровані завдання черги (ShouldBeEncrypted).

Паролі від нього не залежать - вони хешуються bcrypt чи argon2, а не шифруються.

Якщо ключ змінити: усі сесії завершаться (cookie не розшифруються), підписані посилання перестануть працювати, а зашифровані колонки в базі стане неможливо прочитати.

Як змінити без цього: старий ключ переносять у APP_PREVIOUS_KEYS. Laravel шифрує новим, а розшифровує по черзі новим і попередніми.

Якщо ключ витік - зловмисник може підробляти cookie й підписані URL, розшифрувати дані з бази. Тому:

  1. згенерувати новий ключ, старий - тимчасово в APP_PREVIOUS_KEYS;
  2. перешифрувати дані з кастом encrypted новим ключем;
  3. прибрати старий ключ з APP_PREVIOUS_KEYS.

Ключ не комітять у репозиторій і не логують; для .env у репозиторії є php artisan env:encrypt.

Докладніше в документації: Плавна ротація ключів шифрування

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання