@Horosh294

Как выдавать пустую страницу в PHP?

На сервере стоит конфиг, позволяющий определять является ли посетитель частью атаки или нет, работает исправно. Суть в том что таким посетителям бот выдает 503 ошибку. Но во времена огромных атак на сайт вывод 503 ошибки десятки тысяч раз видимо перегружает сервер.
Мне пришло в голову, что если это будет не вывод ошибки а пустая страница, то такой проблемы не будет.
Часть кода, отвечающая за 503 ошибку:
if ($isFakeBot) {
        http_response_code(503);
        exit;
    }

Как теперь должен будет выглядеть этот код, с учетом вышесказанного?
  • Вопрос задан
  • 304 просмотра
Решения вопроса 1
@alexalexes
Проблема такой защиты от DDOS на PHP в том, что атакующий пользователь все же успевает запустить скрипт на PHP, хоть и с минимальными ресурсами. Если у вас архитектура серверного приложения построена не на event loop (как правило, обычные сайты), то для каждого запущенного скрипта выделяется отдельный системный процесс - не самый экономный вариант работы PHP сервера.
Поэтому, нерадивых пользователей лучше отшивать как можно раньше.
Идентифицировать плохого пользователя вы можете и на PHP, а вот работу по его отсечению лучше доверить системе, которая стоит перед PHP сервером. Это может быть и Apache, и Nginx.
Определяете пользователя и добавляете его в файл черного списка по IP, user agent или cookie, который будет обрабатывать настроенный Apache или Nginx.
Лучше конечно, чтобы это был отдельный файрвол, еще лучше - на железке (но в условиях арендуемого хостинга такое маловероятно).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
if ($isFakeBot) {
die();
}
Ответ написан
  1. Оставить как есть, указанный код много ресурсов не отнимает.
  2. Спрятаться за CloudFlare.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Логика конечно на грани фантастики.
Кто видел вопросы на форуме по пэхапе, над анекдотами не смеётся.

Если сервер ложится под атакой, то разумеется, виновата выдача других цыферок. Если отдавать клиенту цифры 503, то кранты, весь сервер лежит. А если выдавать 200 - то зашибись все летать будет. Л - логика.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы