Загрузка...

Как защитить Laravel-приложение в продакшене: prohibitDestructiveCommands()

laravel cover

Когда дело касается продакшена, одна случайная команда может стоить вам базы данных. В Laravel есть простой способ защититься от этого без кастомных хуков и «костылей». Речь о встроенном механизме запрета опасных команд — DB::prohibitDestructiveCommands().

Этот метод добавили тихо, но он решает большую проблему: предотвращает запуск команд, которые могут разрушить данные в боевом окружении.


Почему это важно

Команды вроде:

  • db:wipe
  • migrate:fresh
  • migrate:refresh
  • migrate:reset

существуют ради удобства разработки. Они очищают базу, пересоздают таблицы, откатывают миграции — на локалке это нормально.

Но в продакшене запуск любой из этих команд = потеря данных. Ошибиться легко: автоматизация, ssh-доступ, CI/CD, человеческий фактор — всё это реальные угрозы.


Как включить защиту

Достаточно добавить одну строку в AppServiceProvider:

namespace App\Providers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        DB::prohibitDestructiveCommands(
            $this->app->isProduction()
        );
    }
}

Если приложение работает в production, Laravel автоматически заблокирует выполнение опасных команд.


Что происходит при попытке запуска

Если кто-то запустит запрещённую команду, Laravel вернёт:

“This command is prohibited from running in this environment.”

Никаких скрытых действий. Прямая и понятная защита.


Чем эта функция полезна

  • Минимизирует риск случайного запуска миграций с разрушительными эффектами.
  • Работает из коробки и не требует кастомных Guard’ов.
  • Повышает безопасность CI/CD процессов.
  • Применяется точечно: только в продакшене, без ограничений локальной разработки.

По сути — маленький механизм с большим эффектом.


Итог

DB::prohibitDestructiveCommands() — это то, что стоит включить в каждом боевом Laravel-проекте. Всего одна настройка превращает хрупкий продакшн во что-то намного более защищённое от человеческих ошибок.

Хочешь — сделаю под эту статью минималистичную обложку в фирменном стиле RWSite.ru.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *