Как остановить всплеск паразитного трафика через redirect.php в Битрикс: решение с проверкой реферера

19.03.2024 ≈ 2 минуты. 24 показа
В последнее время на множестве сайтов работающих на Битрикс "Управление сайтом" наблюдаются огромные скачки посещений
vsplesk-parazitnogo-trafika-cherez-redirect-php.jpg

И все это из-за паразитного трафика. Таким способом обычно маскируют источник перехода на конечный адрес. Чтобы в реферере был домен обычного сайта, с чистой репутацией.

Увидеть можно это в журнале

vsplesk-parazitnogo-trafika-cherez-redirect-php-2.jpg

Запросов очень много и они создают дополнительную нагрузку на сайт.

Чтобы это остановить, можно внести дополнительную логику в файл /bitrix/redirect.php

В зависимости от того, используете ли вы этот функционал, можно сделать следующее
  1. Отсекать все запросы если нет дополнительного параметра в такой ссылке (произвольный параметр который будет формироваться на вашем сайте и передаваться в ссылке)
  2. Проверять реферер и отсекать все запросы, в которых значение не соответствует вашему домену

  3. Если не пользуетесь этим функционалом, можно в дополнение ко 2 пункту, просто отсекать все такие запросы, возвращая 404 ошибку, как сделано ниже.

// файл /bitrix/redirect.php
// отсекаем без реферера ----
if (empty($_SERVER['HTTP_REFERER'])) {
    header('Not found', true, 404);
    exit(0);
}

// отсекаем только с реферером в котором иной домен ----
$refererHost = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
$host = parse_url($_SERVER['HTTP_HOST'], PHP_URL_HOST);

$refererHost = preg_replace('/(:\d+)$/', '', $refererHost);
$host = preg_replace('/(:\d+)$/', '', $host);

if ($refererHost !== $host) {
    header('Not found', true, 404);
    exit(0);
}
// совсем отсекаем все запросы ---
header('Not found', true, 404);
exit(0);
// далее стандартный код файла
define("ADMIN_SECTION", false);
//....
Результат
vsplesk-parazitnogo-trafika-cherez-redirect-php-3.jpg


Обратно к списку