Защита от ботов на Symfony
В приложении на Symfony защиту проще всего поставить до фреймворка: бот не дойдёт ни до ядра, ни до контейнера, ни до базы.
Что обычно болит на Symfony
- Перебор паролей и токенов на маршрутах авторизации
- Выкачивание данных через публичный API
- Спам через формы и публичные эндпоинты
- Нагрузка от парсеров на тяжёлые страницы
Как подключить
-
1
Положите модуль
Папка botban/ уровнем выше public/, чтобы файл не был доступен снаружи.
-
2
Добавьте вызов в public/index.php
До подключения autoload_runtime.php. Ключи удобно держать в переменных окружения.
<?php // public/index.php require_once __DIR__ . '/../botban/botban.php'; BotBan::protect(\$_ENV['BOTBAN_KEY'] ?? '', \$_ENV['BOTBAN_SECRET'] ?? ''); require_once dirname(__DIR__) . '/vendor/autoload_runtime.php'; -
3
Исключите служебные маршруты
Вебхуки, health-check и внутренние API добавьте в белый список путей или в skip_paths модуля.
На что обратить внимание
В профилировщике модуля не видно
Он отрабатывает до ядра Symfony, поэтому не попадает ни в профилировщик, ни в логи приложения. Это нормально.
За балансировщиком включите доверие к прокси
Иначе все посетители будут выглядеть одним адресом. Параметр trusted_proxies в вызове protect().