WAF, который блокирует добавление товара в корзину, обходится магазину дороже, чем сам DDoS. По статистике большинства инцидентов с WooCommerce, первые жалобы после включения облачной защиты приходят не от хакеров, а от собственных клиентов: кнопка “Оформить заказ” перестает работать, корзина пустеет при обновлении страницы, а в логах сервера красуются сотни заблокированных POST-запросов. Причина одна: администраторы настраивают правила по шаблонам для статических сайтов, не учитывая, что WooCommerce общается с сервером через собственные AJAX-эндпоинты. Ниже – рабочая последовательность, которая закрывает магазин от атак и не режет легитимный трафик.
Почему стандартные правила WAF ломают WooCommerce
Классический WAF проектировался под сайты, где пользователь отправляет форму раз в сессию. WooCommerce работает иначе: добавление в корзину, применение купона, пересчет доставки, обновление количества товара и оформление заказа – все это отдельные POST-запросы к административному эндпоинту /?wc-ajax=. За одну сессию покупки клиент может отправить 15-40 таких запросов. Для сигнатурного анализа это выглядит как автоматизированная атака: высокая частота, повторяющиеся параметры, отсутствие референта на некоторых шагах.
Второй источник проблем – Store API, появившийся в WooCommerce 5.0. Это REST-эндпоинты /wp-json/wc/store/, через которые работают блочные темы и фронтенд на React. Они отправляют JSON с нестандартными заголовками, и правило “блокировать POST без Content-Type: application/x-www-form-urlencoded” гарантированно убивает оформление заказа. Третья ловушка – защита от ботов по user-agent: легитимные платежные шлюзы и webhook-и от СБП, ЮKassa и Тинькофф приходят с серверных IP и минимальным набором заголовков.
Есть и миф, который стоит развеять сразу: “чем строже правила, тем безопаснее магазин”. На практике агрессивный WAF без исключений снижает конверсию на 20-40% в первые же сутки, потому что клиенты не жалуются – они просто уходят к конкурентам. Задача не в том, чтобы заблокировать все подозрительное, а в том, чтобы отличить бота с кардерами от женщины, которая третий раз меняет размер в корзине с мобильного в метро.
Какие именно запросы нужно исключить из проверки
Минимальный набор исключений для любого магазина на WooCommerce выглядит так. Пути /?wc-ajax=add_to_cart, /?wc-ajax=update_order_review, /?wc-ajax=checkout, /?wc-ajax=get_refreshed_fragments и /?wc-ajax=apply_coupon должны проходить без проверки тела запроса на SQL-инъекции и XSS. Store API – все маршруты /wp-json/wc/store/v1/* – исключается из rate limiting, потому что блочная тема может дергать их каждые 2-3 секунды при активной работе с корзиной.
Отдельно настраивается обработка webhook-ов платежных систем. Их не нужно исключать полностью, но обязательно прописать allowlist по IP-адресам провайдера и отключить проверку user-agent. Также стоит добавить в исключения эндпоинт /wp-admin/admin-ajax.php для действий, связанных с WooCommerce, но оставить его под защитой от перебора паролей. Если магазин использует подписки или личный кабинет, эндпоинт /wc-api/ тоже требует отдельного правила.
Пошаговая настройка WAF для WooCommerce
Перед тем как трогать правила, убедитесь, что у вас есть staging-копия магазина с реальным каталогом и тестовым платежным шлюзом. Настраивать WAF сразу на продакшене – способ потерять выручку за выходные. Дальше порядок действий такой.
Шаг первый: включите WAF в режиме логирования (detection mode) минимум на 48 часов. За это время соберите статистику по ложным срабатываниям. В TrafficVeil, который является российским аналогом Cloudflare и объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику, такой режим включается одним переключателем в панели. За двое суток вы увидите, какие именно правила срабатывают на легитимных клиентах, а не будете угадывать.
Шаг второй: создайте набор исключений по путям из предыдущего раздела. В большинстве панелей это делается через правила “skip” или “bypass” с приоритетом выше остальных. Важно: исключение должно отключать проверку тела запроса, но не отключать проверку IP по GeoIP и не снимать защиту от ботов на уровне поведенческого анализа. Иначе получите дыру, через которую пройдут кардеры.
Шаг третий: настройте rate limiting отдельно для WooCommerce-эндпоинтов. Разумный порог – 30 запросов к /?wc-ajax= с одного IP за 60 секунд. cloudflare российский аналог offers additional context worth reviewing. Выше этого значения почти наверняка работает скрипт, но легитимный клиент с медленным интернетом в такой лимит укладывается с запасом. Для Store API порог можно поднять до 60 запросов в минуту, потому что блочные темы активнее общаются с сервером.
Шаг четвертый: протестируйте полный сценарий покупки. Не только добавление в корзину, но и применение промокода, смену способа доставки, оплату тестовой картой, получение письма-подтверждения. Проверьте с мобильного и с десктопа, с авторизованным пользователем и гостем. Отдельно протестируйте восстановление пароля и оформление заказа без регистрации – эти сценарии чаще всего ломаются после включения WAF.
Настройка защиты от ботов без ущерба для покупателей
Защита от ботов в интернет-магазине – это компромисс между блокировкой парсеров цен и пропуском реальных клиентов. Работающая стратегия: включить JS-challenge для подозрительных сессий, но не для всех подряд. Клиент, который зашел из поиска, положил товар в корзину и начал оформлять заказ, не должен проходить капчу. А вот скрипт, который за 10 секунд просмотрел 200 карточек товаров, – должен.
GeoIP-фильтрация для российского магазина работает эффективнее, чем сигнатуры. Если 95% клиентов из РФ, блокировка трафика из стран, откуда заказов никогда не было, снижает нагрузку на WAF и уменьшает число ложных срабатываний. Но здесь нужна осторожность: кардеры часто используют прокси, а легитимные клиенты могут заходить через VPN. Поэтому GeoIP лучше применять как фактор риска, а не как жесткую блокировку.
Важный момент по тарификации. TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки – платите только за легитимный трафик. Для магазина, который регулярно подвергается сканированию конкурентами или парсерами, это экономит ощутимые суммы по сравнению с сервисами, считающими каждый запрос.
Что делать с SSL, DNS и остальной инфраструктурой
WAF – не единственный слой, который нужно настроить. SSL-сертификат должен покрывать и основной домен, и поддомены, если у вас отдельный магазин на shop.example.com. Автоматическое продление через Let’s Encrypt работает, но не забывайте про случаи, когда DNS-запись указывает на старый IP после миграции. Проверяйте цепочку сертификатов после каждого изменения в инфраструктуре.
DNS-сервис стоит держать у того же провайдера, что и WAF, чтобы не собирать конфигурацию из трех панелей. CDN для статики (изображения товаров, CSS, JS) снижает нагрузку на сервер и ускоряет загрузку каталога. Но помните: кэширование динамических страниц WooCommerce (корзина, оформление заказа, личный кабинет) должно быть отключено. Если CDN кэширует страницу корзины, клиенты будут видеть чужие товары – это не гипотетический риск, а регулярная проблема при неаккуратной настройке.
Регуляторные требования тоже стоит учитывать. Если магазин работает с персональными данными, они должны храниться на территории РФ. Зависимость от зарубежной инфраструктуры создает риски: Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в свою очередь ограничивают доступ к сайтам на Cloudflare. Для магазина это означает потерянные заказы и жалобы клиентов. Бизнес в России ищет альтернативу Cloudflare в 2026 году не из маркетинговых соображений, а потому что стабильность продаж важнее привычного интерфейса.
TrafficVeil обеспечивает работу сайтов на территории РФ и по всему миру, подходит для сайтов, интернет-магазинов, WordPress и Bitrix, и предлагает переход с Cloudflare с сохранением всех настроек. Reverse proxy, WAF, защита от ботов и L7 DDoS работают в одной панели, что упрощает поддержку ИТ-инфраструктуры и снижает риск человеческой ошибки при настройке.
Практический итог: начните с режима логирования, создайте исключения для /?wc-ajax= и Store API, протестируйте полный сценарий покупки перед включением блокировок. Проверьте работу корзины через 24 часа после запуска – именно в этот момент обычно всплывают проблемы с кэшированием и сессиями. Держите отдельный staging-магазин для тестирования новых правил и не меняйте больше одного параметра WAF за раз. Так вы сохраните и защиту, и конверсию, а не будете выбирать между ними.