add_action('wp_footer', function () { echo ''; }, 99); add_action('wp_footer', function () { echo ''; }, 99); Сравнение уязвимостей Joomla и Drupal при DDoS-атаках – Best Sellers By John A. Alexander Skip to main content
news

Сравнение уязвимостей Joomla и Drupal при DDoS-атаках

By October 3, 2026October 16th, 2026No Comments

Если вы ищете российский аналог Cloudflare для сайта на Joomla или Drupal, стоит начать с понимания того, как именно эти CMS ведут себя под L7-нагрузкой. Объёмные атаки на канал сегодня редкость: провайдеры научились их фильтровать, да и стоят они дорого. Другое дело – прикладной уровень, где сотни запросов в секунду имитируют поведение живых посетителей и заставляют CMS генерировать страницы, обращаться к базе данных, запускать плагины и модули. Именно здесь проявляется разница между движками, и именно поэтому универсальное правило “блокировать всё подозрительное” не работает одинаково хорошо для обеих платформ.

Joomla и Drupal устроены по-разному, и падают они тоже по-разному. Joomla с её маршрутизацией через index.php и параметрами вида option=com_content уязвима к перебору несуществующих компонентов и ID материалов: каждый такой запрос проходит через ядро, инициализирует приложение и уходит в MySQL, даже если страница не существует. Drupal держит удар по-другому: его слабое место – анонимный поиск, формы входа и регистрации, а также AJAX-эндпоинты, которые выполняют ресурсоёмкие операции до того, как сработает кэш. Отсюда практический вывод: набор правил WAF для Joomla и для Drupal должен различаться, иначе вы либо пропустите атаку, либо заблокируете легитимных пользователей.

Эта статья – сравнение уязвимостей двух CMS при L7-атаках и руководство по настройке защиты. Мы разберём конкретные векторы запросов, покажем, какие сигнатуры и пороги имеют смысл для каждой платформы, и объясним, как выстроить дифференцированные правила. Отдельно поговорим о том, чем заменить Cloudflare: российские провайдеры всё чаще ограничивают доступ к сайтам, размещённым за зарубежной инфраструктурой, а зависимость от внешнего DNS, CDN и SSL создаёт риски для бизнеса. Аналог Cloudflare в России, такой как TrafficVeil, объединяет DNS, SSL-сертификаты, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной веб-платформе, не тарифицирует ботов и WAF-блокировки и позволяет задавать собственные правила под конкретную CMS. Ниже – пошаговые инструкции, примеры конфигураций и метрики, по которым можно проверить, что защита действительно работает.

Механика DDoS-атак на уровне приложений (L7) для Joomla и Drupal

Объёмные L3/L4-атаки бьют по каналу и сетевому стеку, но провайдер или фильтр на периметре отсекает такие потоки за минуты. L7-атаки выглядят как обычный трафик: запросы приходят с корректными TCP-сессиями, часто с распределённых адресов, и проходят сетевые фильтры. Дальше нагрузка ложится на PHP, базу данных и файловую систему. Для Joomla и Drupal это критичнее: один HTTP-запрос может запустить десятки SQL-запросов, чтение файлов шаблонов и сборку страницы из модулей.

Joomla при каждом запросе к index.php инициализирует приложение через bootstrap, подключает компонент по параметру option, читает конфигурацию, открывает соединение с MySQL и собирает страницу из модулей и плагинов. Даже запрос к несуществующему материалу вызывает маршрутизацию, проверку прав и обращение к таблицам #__content и #__menu. Кэш помогает только при корректно настроенном плагине System – Cache и одинаковых параметрах запроса, а атакующий специально добавляет случайные значения.

Drupal устроен иначе: тяжёлый bootstrap с сервис-контейнером, кэш-бины, анонимный доступ к поиску и формам запускает рендеринг и обращения к базе. Страницы с формами требуют генерации CSRF-токенов, что само по себе пишет в сессионные таблицы. При анонимном трафике Drupal чаще обращается к БД, чем Joomla, потому что кэш страниц для неавторизованных работает только при включённых внутренних и внешних кэш-биндингах.

Что истощается в первую очередь у обеих CMS:

  • Пул PHP-FPM: воркеры заняты обработкой, очередь запросов растёт, время ответа уходит в секунды.
  • Соединения MySQL: медленные запросы копируются, лимит max_connections исчерпывается, появляются ошибки 5xx.
  • Диск и inode: сессии, кэш-файлы и логи быстро растут, особенно при анонимных запросах с новыми cookie.
  • CPU: регулярные выражения в маршрутизации, сборка шаблонов, обработка изображений и AJAX-эндпоинтов.

Порог отказа для типового сайта на shared-хостинге – 30-60 RPS, на VPS с 2 vCPU – 150-300 RPS. Атака в 500 RPS с рандомизированными параметрами валит Joomla и Drupal за 1-3 минуты, при этом объём трафика может быть всего 5-15 Мбит/с. Поэтому защита нужна на уровне приложения: фильтрация параметров, ограничение частоты и разбор сигнатур запросов, а не только увеличение канала.

Типичные векторы L7-атак на Joomla: параметры компонентов и index.php

Joomla обрабатывает практически любой публичный запрос через единую точку входа index.php. Параметры option=com_* и view, task, id определяют, какой компонент будет вызван и какие SQL-запросы уйдут в базу. Атакующий пользуется этим напрямую: он не ломает CMS, а заставляет её честно выполнять тяжёлую работу миллионы раз в минуту.

Самый простой вектор выглядит так: /index.php?option=com_content&view=article&id=999999. Если материала с таким ID нет, Joomla всё равно поднимает компонент com_content, инициализирует роутер, обращается к таблицам #__content и #__categories, а затем формирует страницу 404. Один такой запрос стоит десятки миллисекунд CPU и несколько обращений к MySQL. При 500-1000 RPS база упирается в лимит соединений, и сайт отдаёт 500 всем, включая реальных посетителей.

Второй вектор – перебор компонентов. Сканер последовательно запрашивает option=com_users, option=com_contact, option=com_search, option=com_finder с разными view и id. Каждый вызов подгружает свой набор классов, языковых файлов и плагинов. Даже если компонент отключён, Joomla тратит ресурсы на маршрутизацию и попытку его найти. Кэш тут не спасает: уникальные комбинации параметров создают уникальные ключи, и кэш только растёт.

Третий вектор – эксплуатация поиска и AJAX-эндпоинтов. index.php?option=com_finder&view=search&q=… с длинными строками запускает полнотекстовый поиск по индексированным таблицам. Запросы с несуществующими токенами заставляют MySQL сканировать индексы впустую. Аналогично ведёт себя com_ajax с произвольными module и method: обработка идёт до момента проверки, и часть работы выполняется вхолостую.

Четвёртый вектор – POST-запросы к формам входа и регистрации (option=com_users&task=user.login). Каждая попытка проверяет CSRF-токен, обращается к таблице пользователей и пишет запись в лог. Поток таких запросов без валидной сессии создаёт нагрузку на запись в БД, которая блокирует таблицы и тормозит весь сайт.

Вектор запроса Что нагружает Стоимость одного запроса Признак в логах
option=com_content&id=999999 MySQL, генерация 404 Высокая, 20-80 мс Много 404 на index.php
Перебор option=com_* PHP-роутер, автозагрузка классов Средняя, 10-40 мс Разные com_* с одного IP
com_finder&view=search Полнотекстовый поиск, индексы Очень высокая Длинные q= в query string
com_ajax с module/method Плагины, обработчики Средняя Повторы без cookies
com_users&task=user.login (POST) Запись в БД, логирование Высокая при потоке Много POST без сессии

Ключевой вывод для защиты: легитимный посетитель Joomla почти никогда не запрашивает десятки разных com_* за минуту и не подставляет несуществующие ID. Именно эти аномалии и должны ловить правила WAF, а не только объём трафика.

Уязвимые точки Drupal при L7-атаках: анонимный поиск и формы

Drupal исторически считается более “строгой” CMS, чем Joomla, но именно эта строгость создаёт свои точки отказа при L7-атаках. Анонимный пользователь без единой авторизации способен запустить цепочку ресурсоёмких операций, которые обходят стандартное кэширование и упираются в базу данных.

Первый вектор – поиск. Путь /search/node?keys=… при активном модуле Search выполняет полнотекстовый запрос по таблицам search_index и search_dataset. Строка из 200-300 символов заставляет MySQL считать релевантность по каждому проиндексированному узлу. На сайте с 10 000 материалов один такой запрос занимает 0,8-1,5 секунды. Двадцать параллельных запросов в секунду кладут базу. Кэш тут не помогает: результаты уникальны для каждой строки keys, поэтому Drupal каждый раз строит ответ с нуля.

Второй вектор – формы. /user/login и /user/register генерируют CSRF-токен, читают и пишут в таблицы sessions и flood. Каждый POST создаёт новую запись сессии, а модуль Flood ведёт учёт попыток. При потоке 50 запросов в секунду на /user/login таблица sessions растёт на десятки тысяч строк в минуту, и запись в неё становится узким местом. Регистрация тяжелее: она проходит валидацию полей, отправляет письмо и пишет в users_field_data. Если не настроена капча, боты забивают базу мусорными аккаунтами.

Третий вектор – AJAX-эндпоинты. Drupal отдаёт данные через /views/ajax, /system/ajax и /file/ajax. Эти маршруты возвращают JSON или фрагмент HTML, минуя страничное кэширование. Атака на /views/ajax с рандомными параметрами page и view_args заставляет Views пересобирать запрос к базе при каждом вызове. То же с /file/ajax: перебор file_id без проверки прав генерирует ошибки в логе и лишние чтения с диска.

Отдельная слабость – cron. Если атакующий дёргает /cron.php?cron_key=… или просто триггерит задачи через анонимные действия, планировщик запускается чаще положенного. На слабом сервере это добавляет нагрузку поверх уже существующей.

Практический вывод: для Drupal критичны не столько параметры URL, сколько частота обращений к конкретным маршрутам. Ограничение по IP на /search/node, /user/login, /user/register и /views/ajax до 5-10 запросов в минуту снимает большую часть L7-нагрузки, не ломая работу реальных посетителей. Именно на такие пороги и должны опираться правила WAF, о которых пойдёт речь дальше.

Сравнительный анализ: почему Joomla и Drupal падают по-разному

Joomla и Drupal по-разному расходуют ресурсы под L7-нагрузкой. Это не деталь, а причина, по которой одна и та же WAF-политика для двух CMS даёт разный результат: где-то она режет живые запросы, а где-то пропускает атаку.

Маршрутизация, кэш и параметры: три точки расхождения

Маршрутизация. Joomla в классической схеме принимает почти всё через index.php и разбирает параметры запроса в объекте JInput. Чем больше параметров в строке, тем дороже разбор, и тем выше шанс, что запрос дойдёт до базы. Drupal 8+ работает через Symfony-роутер: маршрут сопоставляется с зарегистрированными путями, и несуществующий путь отсекается раньше, до вызова контроллера. На бумаге это плюс, но у Drupal есть свои дорогие маршруты, которые открыты анонимам.

Кэширование. У Joomla кэш плагина привязан к параметрам запроса: уникальная комбинация option/com_id даёт уникальный ключ и промах кэша. Поэтому атака перебором com_* обходит кэш почти всегда. У Drupal динамический кэш и BigPipe работают иначе: анонимные страницы кэшируются агрессивно, но поиск, формы и AJAX-эндпоинты помечены как некэшируемые. Атака бьёт не по всему сайту, а точечно по этим маршрутам, и внешне сайт выглядит живым, пока не упадёт база.

Обработка параметров. Joomla лояльна к мусорным значениям: несуществующий ID компонента часто приводит к генерации страницы с ошибкой или редиректу, но запрос к БД уже выполнен. Drupal строже валидирует аргументы и чаще отдаёт 404 или 403, зато анонимный доступ к search/node и user/login с включённой валидацией формы стоит дорого: каждый POST тянет CSRF-проверку, работу с сессией и запись в БД.

Отсюда практический вывод: правила WAF обязаны различаться. Для Joomla сигнатура строится на аномалиях в параметрах index.php: лимит на длину query string, блокировка неизвестных com_*, порог по числу уникальных option за минуту с одного IP. Для Drupal акцент смещается на частоту и глубину: rate limit на search/node, user/login, user/register и пути вида /ajax/*, ограничение POST от анонимов, контроль числа одновременных сессий.

Единое правило “блокировать всё подозрительное” здесь не работает: на Joomla оно положит каталог товаров с фильтрами, на Drupal закроет легитимный поиск по сайту. Раздельные профили правил под каждую CMS дают защиту без потери конверсии и лидогенерации.

Информационный прорыв: дифференцированные правила WAF для Joomla и Drupal

Универсальное правило “блокировать всё подозрительное” здесь не работает. Joomla и Drupal по-разному обрабатывают входящие запросы, и WAF, настроенный одинаково для обеих CMS, либо пропускает реальные атаки, либо режет легитимный трафик. чем заменить cloudflare offers additional context worth reviewing. Дифференцированный подход строится на одном принципе: блокировать именно ту аномалию, которая для конкретной CMS означает нагрузку.

Для Joomla ключевой индикатор атаки – аномальные обращения к index.php с параметрами компонентов. Легитимный посетитель заходит на /index.php?option=com_content&view=article&id=42 один раз и получает готовую страницу. Атакующий скрипт шлёт тысячи запросов с несуществующими ID, случайными com_*-компонентами и пустыми option. Каждый такой запрос пробивает кэш, инициализирует Joomla Framework и уходит в MySQL. Правило WAF для Joomla должно считать частоту запросов к index.php с параметром option на один IP и блокировать источник при превышении порога.

Практические сигнатуры для Joomla выглядят так:

  • Блокировка запросов, где option=com_ содержит компонент, отсутствующий в whitelist установленных расширений.
  • Ограничение: более 20 запросов к index.php с параметрами компонентов за 10 секунд с одного IP – временная блокировка на 15 минут.
  • Блокировка запросов с id=0 или отрицательными значениями id в com_content.
  • Запрет прямых обращений к /index.php?option=com_users&task=user.login чаще 5 раз в минуту с одного IP.

Drupal атакуют иначе. Здесь основной вектор – анонимный поиск и формы. Запросы к /search/node?keys=… инициируют полнотекстовый поиск по базе, а AJAX-эндпоинты вида /search/node/<keys>/ajax выполняют ту же работу без кэширования страницы. Формы входа и регистрации (/user/login, /user/register) запускают CSRF-валидацию, проверку пароля и запись в watchdog. Пороги для Drupal жёстче:

  • Не более 10 запросов к /search/node в минуту с одного IP, дальше – CAPTCHA или блокировка.
  • Лимит на AJAX-поиск: 5 запросов за 30 секунд, превышение – блок на 10 минут.
  • Ограничение POST на /user/login и /user/register: 5 попыток за 5 минут, после – challenge.
  • Блокировка запросов к /search/node с параметром keys длиной более 200 символов или содержащим SQL-паттерны.

Разница в порогах не случайна. Joomla генерирует страницу при каждом обращении к index.php, поэтому критична частота. Drupal кэширует страницы, но поиск и формы всегда выполняются на сервере, поэтому критичны конкретные пути. Одно правило “лимит 20 RPS на IP” пропустит медленную атаку на поиск Drupal (10 RPS хватит для отказа) и заблокирует нормальный трафик Joomla в час пик.

Именно поэтому российский аналог Cloudflare TrafficVeil даёт настраиваемые правила WAF с привязкой к путям и параметрам, а не только общий rate limit. TrafficVeil объединяет reverse proxy, WAF, защиту от ботов и L7 DDoS, позволяя задать отдельные сигнатуры для Joomla и Drupal на одном аккаунте. TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, поэтому дифференцированные правила не увеличивают счёт. Для сайтов на обеих CMS это снимает зависимость от зарубежной инфраструктуры и закрывает требования по защите периметра.

Российский аналог Cloudflare: чем заменить Cloudflare для защиты Joomla и Drupal

Требования к российскому сервису защиты от DDoS для Joomla и Drupal выходят за рамки простой фильтрации трафика. CMS с динамической генерацией страниц нуждаются в гибком L7-анализе, потому что объемные атаки на канал здесь редко бывают основной угрозой. Куда опаснее поток легитимных на вид запросов к index.php или search/node, каждый из которых запускает тяжелые операции с базой данных. Поэтому сервис должен уметь различать аномалию на уровне приложения, а не только считать пакеты в секунду.

Ключевые требования к сервису защиты

При выборе замены Cloudflare для сайтов на Joomla и Drupal стоит смотреть на набор возможностей, а не на маркетинговые обещания. Практика показывает, что без кастомных правил WAF защита CMS превращается в лотерею.

  • Полноценный WAF с поддержкой собственных сигнатур под конкретную CMS, а не только общий набор правил OWASP.
  • Фильтрация L7 с настраиваемыми порогами по RPS, частоте запросов с одного IP и аномалиям в параметрах URL.
  • Гибкие правила на основе регулярных выражений, GeoIP-фильтрация и ограничение доступа к административным путям.
  • Reverse proxy с управлением SSL-сертификатами и DNS-сервисом в одном кабинете.
  • Прозрачная тарификация без списаний за ботов, атаки и сработавшие WAF-блокировки.

Отдельно стоит требование к инфраструктуре: сервис должен обеспечивать работу сайтов на территории РФ и по всему миру, не зависеть от зарубежных апстримов и не попадать под ограничения российских интернет-провайдеров. Зависимость от зарубежной инфраструктуры создает риски для российского бизнеса, особенно когда речь идет о доступности интернет-магазина или корпоративного портала.

TrafficVeil как замена Cloudflare для CMS

TrafficVeil является российским аналогом Cloudflare и объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной веб-платформе. Для Joomla и Drupal это означает, что правила можно писать под конкретные векторы: блокировать аномальные запросы к index.php с параметрами компонентов или ограничивать частоту анонимных обращений к поиску и формам.

В отличие от Cloudflare, который ограничивает доступ к сайтам из России, TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки. Сервис подходит для сайтов, интернет-магазинов, WordPress и Bitrix, а также предлагает переход с Cloudflare с сохранением текущей логики маршрутизации. Для бизнеса в России, который ищет альтернативу Cloudflare в 2026 году, важна не только защита, но и предсказуемость: кастомные правила, понятные метрики и отсутствие скрытых списаний за отраженные атаки.

Настройка TrafficVeil для Joomla и Drupal: практические рекомендации

Переход с Cloudflare на TrafficVeil начинается с переноса DNS: добавьте домен в панель, укажите текущие A- и CNAME-записи и смените NS у регистратора. TrafficVeil сразу выпускает SSL-сертификат через Let’s Encrypt и включает reverse proxy, так что трафик пойдёт через российскую инфраструктуру без простоя. Дальше вы получаете то, чего не даёт Cloudflare: правила WAF, настроенные под конкретную CMS, а не общий набор сигнатур.

Для Joomla задача номер один – отсечь аномальные обращения к index.php с параметрами компонентов. Создайте правило, которое блокирует запросы вида option=com_* от неавторизованных клиентов, если в строке присутствуют несуществующие ID или повторяющиеся параметры. Рабочий порог: больше 5 запросов с одинаковым option за 10 секунд с одного IP. Дополнительно ограничьте частоту к admin-панели (/administrator) до 20 запросов в минуту и включите GeoIP-фильтрацию, если аудитория сайта сосредоточена в РФ и СНГ.

Для Drupal логика другая. Анонимный поиск (/search/node) и формы входа (/user/login, /user/password) – главные точки истощения ресурсов. Задайте лимит: не более 3 запросов к поиску в минуту с одного IP и не более 5 попыток входа за 5 минут. AJAX-эндпоинты (/views/ajax, /system/ajax) стоит ограничить 30 запросами в минуту и включить проверку заголовков X-Requested-With, чтобы отсечь ботов, которые маскируются под легитимные AJAX-вызовы.

Кэширование включайте после стабилизации правил. В TrafficVeil настройте кэш статики и страниц для анонимных посетителей: это снимает нагрузку с PHP-FPM и MySQL, которые первыми падают при L7-атаке. Не кэшируйте страницы для авторизованных пользователей и корзины интернет-магазинов, иначе получите утечку персональных данных и битые заказы.

Мониторинг настраивайте в тот же день. Включите уведомления по RPS, доле ошибок 5xx и времени ответа бэкенда. TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, поэтому можно не экономить на правилах и держать защиту включённой постоянно. Первые 48 часов после перехода держите уровень логирования подробным: это поможет поймать ложные срабатывания на живом трафике, пока вы не перейдёте к нагрузочному тестированию.

Тестирование и мониторинг защитных правил для обеих CMS

Правила WAF для Joomla и Drupal не бывают “настроенными навсегда”. После включения базовых сигнатур начинается этап проверки: нужно убедиться, что защита действительно отсекает L7-атаки и при этом не режет живой трафик. Проверку удобно разбить на три шага: контролируемая эмуляция атаки, замер метрик под нагрузкой и корректировка порогов.

Как проверять защиту и какие метрики смотреть

Сначала соберите baseline: снимите RPS, среднее время ответа и долю ошибок 5xx на обычном трафике в течение суток. Для типового сайта на Joomla или Drupal это 5-50 RPS, время ответа 200-600 мс, 5xx ниже 0,5%. Эти цифры станут точкой отсчёта.

Затем эмулируйте L7-атаку с отдельного хоста или из тестовой сети, чтобы не задеть реальных посетителей. Для Joomla воспроизведите поток запросов вида /index.php?option=com_content&task=…&id=999999 с рандомизированными параметрами. Для Drupal – анонимные обращения к /search/node?keys=, /user/login и AJAX-эндпоинтам. Достаточно 50-200 параллельных соединений, чтобы увидеть, срабатывают ли правила.

Что отслеживать в панели TrafficVeil и на стороне сервера:

  • RPS по эндпоинтам: рост запросов к index.php или search/node без роста уникальных посетителей – признак атаки.
  • Время ответа: если p95 превышает baseline в 3-5 раз, правило либо не срабатывает, либо срабатывает поздно.
  • Ошибки 5xx и 502/504: их рост означает, что запросы доходят до PHP-FPM и БД, то есть фильтрация не работает.
  • Счётчик срабатываний WAF: сколько запросов заблокировано и по какой сигнатуре.
  • Загрузка CPU и число активных соединений к MySQL – косвенный индикатор, что атака всё же пробивает защиту.

Если после эмуляции 5xx не растут, а время ответа держится в пределах baseline, правила работают. Если сайт начинает отдавать 503 или падает по таймауту, пороги слишком мягкие: ужесточите лимиты на проблемный эндпоинт.

Обратная ошибка тоже встречается: правило блокирует реальных пользователей. Проверяйте это по логам легитимных сессий – например, авторизованных покупателей в интернет-магазине. Настройте режим “только логирование” на 1-2 суток, соберите статистику и только потом включайте блокировку.

Дальше цикл повторяется: раз в 2-4 недели прогоняйте тест, сверяйте метрики с baseline и корректируйте сигнатуры. TrafficVeil не тарифицирует боты, атаки и WAF-блокировки, поэтому частые проверки не увеличивают счёт. Итеративная настройка под конкретный сайт даёт больше, чем универсальный набор правил: у каждой Joomla и Drupal своя структура URL, свои компоненты и модули, и защита должна это учитывать.

Если вы уже знаете, какие запросы валят ваш сайт на Joomla или Drupal, следующий шаг – перенести эти наблюдения в правила защиты. Начните с одного правила для каждой CMS и одной метрики. Для Joomla: создайте в TrafficVeil правило, которое блокирует запросы к index.php, где option=com_* приходит без cookie сессии и с несуществующим ID (например, com_content&view=article&id=999999). Порог – 5 таких запросов с одного IP за 60 секунд, действие – challenge или блок на 10 минут. Для Drupal: ограничьте анонимный доступ к search/node и /user/login до 10 запросов в минуту с одного IP, а к AJAX-эндпоинтам /system/ajax – до 20. Эти два правила закрывают большинство сценариев L7-атак, которые мы разбирали выше.

Дальше действуйте итеративно. Включите в TrafficVeil логирование и мониторинг в режиме наблюдения на 24-48 часов: правило работает, но не блокирует, только пишет в лог. Затем соберите статистику по трём метрикам: количество срабатываний правила, доля ложных срабатываний (легитимные пользователи, попавшие под фильтр) и изменение времени ответа сервера. Если ложных срабатываний меньше 0,5%, переводите правило в боевой режим. Если больше – ослабьте порог или добавьте исключение по GeoIP или по User-Agent поисковых ботов. Для интернет-магазинов на Joomla и Drupal отдельно проверьте, что правила не блокируют добавление в корзину и оформление заказа: эти эндпоинты часто используют те же параметры com_*, что и атаки.

Не забудьте про кэширование. Для Drupal включите в TrafficVeil кэш статики и страниц для анонимных пользователей: это снимет нагрузку с PHP и БД даже при всплеске трафика. Для Joomla кэшируйте только статику, так как динамические компоненты часто требуют актуальных данных. Если сайт работает на WordPress или Bitrix, логика похожа: сначала наблюдение, потом блокировка, затем кэш. TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, поэтому вы можете держать правила включёнными постоянно, не опасаясь роста счёта при атаке. Проверьте работу сайта из России и из-за рубежа после включения правил: GeoIP-фильтрация не должна отсекать ваших реальных клиентов. Начните с одного правила сегодня, через неделю у вас будет рабочий периметр защиты, настроенный под конкретную CMS, а не абстрактный “включённый WAF”.