BotBan Защита сайта от ботов
Попробовать
Меню
BotBan Защита сайта от ботов
Тема оформления

Новости проекта

PHP-модуль работает под Laravel Octane, RoadRunner и Swoole

Раньше сайтам на Octane и RoadRunner оставался только скрипт в браузере. С версии 1.4.11 модуль подключается к ним через middleware и принимает решение на сервере, до контроллеров.

PHP-модуль BotBan был рассчитан на обычный PHP, где каждый запрос начинается с чистого листа. Под Laravel Octane, RoadRunner, Swoole и FrankenPHP в режиме воркера приложение живёт в памяти и обслуживает тысячи запросов одним процессом. Строка в index.php там выполняется один раз при запуске, а exit, которым модуль заканчивает ответ боту, остановил бы весь воркер. Таким сайтам оставался только скрипт в браузере, а он видит посетителя уже после того, как сервер собрал страницу.

Что изменилось. В модуле 1.4.11 появился метод BotBan::check(). Он принимает переменные запроса и cookie и ничего не выводит сам. Модуль возвращает решение: пропустить запрос в приложение или отдать вместо страницы свой ответ, то есть страницу проверки, блокировку или ответ 429 при превышении лимита. Отдаёт его middleware приложения. Замер нагрузки, уборку кэша и обновление файла модуль откладывает до момента, когда ответ уже ушёл посетителю.

Логика решения та же, что и в обычном режиме: локальный кэш, пропуск после проверки браузера, кнопка «Я человек», белые списки, «Под атакой». Отличий два. Замедление подозрительных запросов в воркере не применяется: процесс один на много посетителей, и усыпить его значит задержать всех. Порядок заголовков модуль не передаёт, потому что RoadRunner собирает их в случайном порядке, и отпечаток по такому порядку только запутал бы движок.

Как подключить. Готовый middleware для Laravel лежит в базе знаний, в статье о подключении PHP-модуля. Его нужно поставить раньше остальных глобальных middleware приложения: адрес посетителя за прокси к этому моменту уже известен, а заголовки безопасности сайта не попадут на страницу проверки. Обычным сайтам на PHP-FPM и Apache ничего делать не нужно, для них всё работает как раньше.