Защита от ботов на Laravel
Для самописного приложения есть два способа подключения, и выбор зависит от того, нужен ли вам доступ к решению внутри кода.
Что обычно болит на Laravel
- Перебор паролей и токенов на маршрутах авторизации
- Выкачивание данных через публичный API
- Спам через формы и публичные эндпоинты
- Нагрузка от парсеров на тяжёлые страницы
Как подключить
-
1
Способ первый: до фреймворка
Вызов в public/index.php до подключения автозагрузчика. Бот не дойдёт ни до маршрутизации, ни до контейнера — экономия максимальная.
<?php // public/index.php require_once __DIR__ . '/../botban/botban.php'; BotBan::protect(env('BOTBAN_KEY'), env('BOTBAN_SECRET')); require __DIR__ . '/../vendor/autoload.php'; -
2
Способ второй: своим middleware
Если решение нужно внутри приложения — например, чтобы по-разному отвечать на API и на веб, — обращайтесь к нашему API сами и применяйте вердикт как считаете нужным.
-
3
Исключите служебные маршруты
Вебхуки платёжных систем, health-check и очереди добавьте в белый список путей.
На что обратить внимание
Первый способ быстрее
Он отсекает бота до загрузки фреймворка. Разница на тяжёлом приложении заметная: не выполняются провайдеры, не поднимается соединение с базой.
За балансировщиком включите доверие к прокси
Иначе все посетители будут выглядеть одним адресом. Параметр trusted_proxies в вызове protect().