Защита от ботов на Symfony
В приложении на Symfony защиту проще всего поставить до фреймворка: бот не дойдёт ни до ядра, ни до контейнера, ни до базы.
7 дней наблюдения без блокировок; платную защиту можно включить сразу после оплаты. Тарифы и лимиты
Что обычно болит на Symfony
- Перебор паролей и токенов на маршрутах авторизации
- Выкачивание данных через публичный API
- Спам через формы и публичные эндпоинты
- Нагрузка от парсеров на тяжёлые страницы
Как подключить
-
1
Положите модуль
Папка botban/ уровнем выше public/, чтобы файл не был доступен снаружи.
-
2
Добавьте вызов в public/index.php
До подключения autoload_runtime.php. Ключи — со страницы сайта в кабинете: .env здесь ещё не прочитан.
<?php // public/index.php if (is_file(__DIR__ . '/../botban/botban.php')) { try { require_once __DIR__ . '/../botban/botban.php'; BotBan::protect('bb_pk_...', 'bb_sk_...'); } catch (\Throwable $e) { // Сбой модуля — сайт работает без защиты. } } require_once dirname(__DIR__) . '/vendor/autoload_runtime.php'; -
3
Исключите служебные маршруты
Вебхуки, health-check и внутренние API добавьте в белый список путей или в skip_paths модуля.
На что обратить внимание
В профилировщике модуля не видно
Он отрабатывает до ядра Symfony, поэтому не попадает ни в профилировщик, ни в логи приложения. Это нормально.
За балансировщиком включите доверие к прокси
Иначе все посетители будут выглядеть одним адресом. Параметр trusted_proxies в вызове protect().
Какие задачи закрывает подключение
Модуль один, задач несколько: что именно он останавливает на сайте под Symfony.