
Card Testing Shield для WooCommerce — защита чекаута от перебора украденных карт (card testing)
Плагин для WooCommerce, который останавливает перебор украденных карт на чекауте: считает попытки оплаты картой и отказы шлюза с одного IP-адреса, сессии браузера и e-mail, ставит растущую паузу после каждого отказа и отказывает ещё до того, как следующая попытка дойдёт до платёжного шлюза. Классический и блочный чекаут, «Оплатить заказ», «Добавить способ оплаты». Базовая версия бесплатна; Pro — лимиты на BIN карты и сеть, автоматическая блокировка во время волны отказов, списки блокировки, журнал до 90 дней и CSV.
- Совместимость
- WooCommerce 8.0+ (проверено на 11.2) · WordPress 6.2+ (проверено на 7.1) · PHP 7.4+ (прогон на 8.3) · классический и блочный чекаут · Stripe, WooPayments, Braintree, Square, Authorize.Net, NMI и другие карточные шлюзы · счётчики в Redis, APCu или таблице БД
- Лицензия
- один сайт, годовая
- Триал
- 7 дней, без карты, один на сайт
- Обновлено
- октябрь 2026
Что есть во Free,
а что даёт Pro
Бесплатная версия работает без ограничения по времени. Pro добавляет остальные функции из таблицы.
Как это выглядит

Триал стартует, когда вы попросите
Свежая установка — бесплатная версия, ничего не включается само. Кнопка «Попробовать Pro 7 дней» → e-mail → ключ сразу в окне и письмом.

Один ключ — один сайт
Переносите магазин — отвяжите лицензию на старом домене и активируйте на новом сами. Для студий — ключи на 5, 25 сайтов или без ограничений.
Технические требования
WooCommerce 8.0+ (проверено на 11.2.1), классический и блочный чекаут, «Оплатить заказ», «Добавить способ оплаты»
WordPress 6.2+ (проверено на 7.1) · PHP 7.4+ (полный прогон на PHP 8.3, на 7.4 — проверка синтаксиса)
Шлюзы: любой карточный через стандартные хуки WooCommerce. Отдельно подключены WooCommerce Stripe Gateway (проверено с 11.0.1, AJAX «Добавить способ оплаты» — с 9.7) и WooPayments (его AJAX-проверка карты, просмотрено на 11.2). Braintree, Square, Authorize.Net и NMI подключены по их исходному коду, живых оплат через них не было
BIN-лимит (Pro): только для шлюзов, которые передают номер карты или BIN на сайт — Authorize.Net, NMI, стандартная форма карты WooCommerce
Счётчики: объектный кеш Redis (проверено с Redis Object Cache), APCu или собственная таблица БД — щит выбирает самое быстрое из доступного
Прокси: Cloudflare (CF-Connecting-IP только из сетей Cloudflare) или заголовок вашего прокси либо балансировщика
Языки админки: украинский, русский, английский
История версий
Лимиты попыток и отказов на адрес, сессию и e-mail; растущая пауза после отказов; лимит одновременных оплат; классический и блочный чекаут, «Оплатить заказ» и «Добавить способ оплаты»…
Вместе с Card Testing Shield для WooCommerce покупают
4 модуля одним заказом — на 40% дешевле, чем по отдельности


Nova Poshta Premium — Новая Почта для WooCommerce

Mono Acquiring — оплата картой monobank для WooCommerce

Telegram-уведомления и Viber/SMS покупателям для WooCommerce
Полное описание модуля
Card Testing Shield для WooCommerce — плагин против перебора украденных карт на чекауте. Card testing выглядит так: скрипт прогоняет через ваш магазин список номеров карт, одну мелкую оплату за другой, чтобы найти те, что ещё работают. Платит магазин: сотни отклонённых транзакций, комиссия шлюза за каждую попытку, чарджбэки, а позже — письмо от Stripe или банка-эквайра о замороженном или закрытом аккаунте.
Щит считает то, что тестировщик карт не может скрыть: сколько оплат картой приходит с одного IP-адреса, одной сессии браузера и одного e-mail и сколько из них шлюз отклонил. Когда лимит исчерпан, следующая попытка получает отказ ещё на вашем сервере — до платёжного шлюза она не доходит и комиссии не стоит. Настоящий покупатель этого не замечает: он делает одну оплату, редко две.
Для ботов, которые перебирают каталог и фильтры GET-запросами, у нас есть отдельный плагин — Crawler Shield для WooCommerce. Card Testing Shield защищает другое: POST-запросы оплаты на чекауте, «Оплатить заказ» и «Добавить способ оплаты». Они не мешают друг другу, на тесте стояли вместе.
Как это выглядит для покупателя
Обычный покупатель не видит ничего нового: та же форма, тот же шлюз. Тот, кто исчерпал лимит, получает нейтральное сообщение в привычном месте ошибок чекаута — без подсказки, какой именно лимит сработал: «Сейчас мы не можем принять от вас ещё одну оплату картой. Попробуйте позже, выберите другой способ оплаты или свяжитесь с нами». Во время короткой паузы добавляется, через сколько секунд можно попробовать снова. Текст сообщения можно изменить в настройках. Другие способы оплаты — перевод на счёт, наложенный платёж — остаются открытыми.
Попытка учитывается только тогда, когда WooCommerce принял форму и передаёт заказ шлюзу. Покупатель, который исправляет ошибку в адресе или забытое поле, попытку не тратит.
Что получает админ
- WooCommerce → Card Testing Shield с вкладками «Обзор», «Правила» и «Журнал».
- Обзор: попытки оплаты картой, отклонённые шлюзом и отказанные щитом за 24 часа и 7 дней; таблица по часам с колонкой «Отказал бы» для режима наблюдения.
- «Покупатель не может оплатить?» — введите IP-адрес или e-mail: видно, что щит насчитал, до какого времени отказ и пауза, и кнопка «Разблокировать» сбрасывает всё сразу.
- «Как щит видит этот магазин»: отслеживаемые способы оплаты, адрес, который щит видит для вас (с предупреждением, если это адрес сервера или прокси), где живут счётчики и включён ли встроенный «Rate limit Checkout» WooCommerce.
Журнал записывает каждую отклонённую оплату и каждый отказ щита: время, где (чекаут, блочный чекаут, «Оплатить заказ», «Добавить способ оплаты»), адрес, e-mail, способ оплаты, заказ и причину — например, «пауза после отказа» или «несколько оплат одновременно». Фильтры «Отказано», «Отказал бы», «Отклонено», «Блокировка». Повторные отказы одного и того же клиента во время атаки не пишутся в журнал по одному, чтобы не раздувать базу. Free хранит журнал 7 дней, Pro — до 90 с экспортом в CSV.
Как это работает — шаг за шагом
- Какие способы оплаты отслеживать. По умолчанию — все карточные: Stripe, WooPayments, Braintree, Square, Authorize.Net, NMI и другие. Банковский перевод, чек и наложенный платёж не отслеживаются, пока вы их не отметите.
- Попытка. Когда WooCommerce принял форму и передаёт заказ шлюзу, щит добавляет попытку к счётчикам IP-адреса, сессии браузера (корзины) и e-mail плательщика. По умолчанию: 10 попыток с адреса и 6 с сессии или e-mail за 60 минут.
- Отказ. Шлюз отклонил оплату — щит учитывает отказ (по умолчанию лимит 5 на адрес и 3 на сессию или e-mail) и ставит паузу: 10 секунд после первого отказа, дальше 20, 40 и до 5 минут. Человек, который вводит карту второй раз, паузы не замечает; скрипт со списком карт замедляется до ползания.
- Поздние отказы. Если шлюз сообщает об отказе позже — вебхуком или после неудачного 3-D Secure, — заказ переходит в «Не удался», и щит учитывает это один раз, даже если статус ставится дважды. Успешный 3-D Secure отказом не считается.
- Одновременные оплаты. Скрипт может отправить 20 карт параллельно — тогда все 20 дошли бы до шлюза раньше, чем первый отказ попадёт в счётчик. Поэтому щит пропускает не больше 3 оплат за 10 секунд с одного адреса, браузера или аккаунта; счётчик атомарный (Redis, APCu или один запрос к таблице). Лимит можно изменить или отключить фильтром
catcode_cts_burst. - Отказ щита. Клиент, исчерпавший лимит, получает отказ на заданное время (по умолчанию 60 минут) с нейтральным сообщением. Покупатели, которые уже платили, менеджеры магазина и администраторы не ограничиваются никогда; адреса, сети, e-mail и домены из белого списка — тоже.
- «Добавить способ оплаты». Любимый путь тестировщиков, которые регистрируют тысячи бесплатных аккаунтов. Щит ограничивает его отдельно (по умолчанию 5 карт и 3 отказа с адреса или аккаунта) — и в форме WooCommerce, и в AJAX-проверках карт Stripe и WooPayments.
- Режим наблюдения. Не уверены, что лимиты подходят вашему магазину? Включите «Наблюдение» на несколько дней: щит только записывает, кому отказал бы, и никому не отказывает.
Pro. Тестировщики гоняют сгенерированные номера одной банковской серии через много адресов — Pro считает отказы на BIN карты (первые шесть цифр) для всех посетителей вместе. Это работает для шлюзов, которые передают номер карты или BIN на сайт: плагины Authorize.Net и NMI, стандартная форма карты WooCommerce. Stripe, Braintree и Square превращают карту в токен ещё в браузере, номер на сайт не попадает — там работают другие лимиты. Ещё Pro считает отказы на сеть /24 (IPv4) или /48 (IPv6) для атак с соседних адресов. Во время волны отказов (по умолчанию 20 отклонённых оплат картой за 15 минут по всему магазину) Pro включает блокировку на 60 минут: более жёсткие лимиты для всех, кроме доверенных покупателей, по желанию гости не могут платить картой, а вам приходит письмо. Блокировку можно включить и завершить вручную. Для «Добавить способ оплаты» есть минимальный возраст аккаунта (по умолчанию 24 часа) или правило «только аккаунты с оплаченным заказом». Списки блокировки — IP-адреса и сети, e-mail и почтовые домены, BIN.
Что под капотом
- Точки проверки:
woocommerce_checkout_processдля классического чекаута, проверка запроса Store API до выполнения для блочного (ответ — обычная ошибка оплаты),woocommerce_before_pay_actionдля «Оплатить заказ»,woocommerce_add_payment_method_form_is_validи AJAX-действия Stripe и WooPayments для «Добавить способ оплаты». - Результат оплаты берётся из ответа WooCommerce и шлюза: успех, отказ, 3-D Secure. Поздний отказ — через переход заказа в «Не удался», один раз на заказ.
- Скользящее окно: лимит читает текущий период плюс долю предыдущего, которая ещё перекрывается, поэтому две быстрые серии по обе стороны полного часа не удваивают лимит.
- Атомарные счётчики: INCR в Redis, apcu_inc или один
INSERT … ON DUPLICATE KEY UPDATE— параллельные запросы не читают устаревшие значения. - Адрес посетителя: CF-Connecting-IP принимается только из официальных сетей Cloudflare, чтобы скрипт не подставил чужой адрес заголовком.
- Данные: ничего не уходит за пределы вашего сервера, бесплатная версия не делает внешних запросов. Номер карты не хранится нигде.
- Удаление плагина убирает его таблицы, настройки и задания крона.
Как установить
- Плагины → Добавить новый → Загрузить плагин: выберите
catcode-card-testing-shield-for-woocommerce-free-1.0.0.zipи активируйте (WooCommerce должен быть активен). - Откройте WooCommerce → Card Testing Shield → «Правила». Лимиты по умолчанию подходят большинству магазинов; если сомневаетесь — включите «Наблюдение» на несколько дней и посмотрите журнал.
- Если сайт за Cloudflare или другим прокси — проверьте во вкладке «Обзор» строку «Ваш адрес, как его видит щит» и при необходимости выберите «Адрес посетителя» в «Правила → Сервер».
- Добавьте в белый список адреса своего офиса или колл-центра, если принимаете оплаты по телефону.
- Для Pro: вставьте лицензионный ключ из письма после оплаты или нажмите «Попробовать Pro 7 дней» внизу вкладки «Правила».
Вопросы
о модуле
Не нашли ответ? Напишите в Telegram — ответим в течение рабочего дня.
Что такое card testing и чем он вредит магазину?
Это скрипт, который прогоняет украденные номера карт через ваш чекаут мелкими оплатами, чтобы найти карты, которые ещё работают. Платит за это магазин: сотни отклонённых транзакций, комиссии шлюза за каждую попытку, чарджбэки, а в конце — платёжный провайдер, который замораживает или закрывает аккаунт.
Не заблокирует ли он настоящих покупателей?
По умолчанию разрешено 6 попыток и 3 отказа на сессию браузера и e-mail и 10 попыток и 5 отказов на IP-адрес в час — настоящему покупателю редко нужно больше двух-трёх. Покупателей, которые уже платили, щит не ограничивает вообще. Если кому-то всё же отказали — найдите его во вкладке «Обзор» по IP или e-mail и разблокируйте.
Это заменяет CAPTCHA или антифрод платёжного шлюза?
Нет, работает вместе с ними. CAPTCHA решают фермы, и она не защищает «Оплатить заказ» и сохранённые карты. Антифрод шлюза видит только попытки, которые уже дошли до шлюза и стоят вам комиссию. Щит останавливает повторные попытки ещё на вашем сервере.
А встроенный в WooCommerce «Rate limit Checkout»?
Эта функция (Настройки → Дополнительно → Функции) пропускает 3 запроса блочного чекаута в минуту с адреса или аккаунта, независимо от результата. Классический чекаут, «Оплатить заказ» и сохранённые карты она не покрывает, на отказы и e-mail не смотрит. Можно держать включёнными оба.
Магазин за Cloudflare — щит видит настоящий адрес покупателя?
Да: адрес берётся из CF-Connecting-IP автоматически, но только для запросов, которые действительно пришли из сетей Cloudflare. За другим прокси или балансировщиком выберите его заголовок в «Правила → Сервер». Во вкладке «Обзор» видно, какой адрес щит видит для вас.
Хранит ли плагин данные карт?
Нет. В журнале — адрес, e-mail, способ оплаты и заказ, никогда номер карты. Pro для шлюзов, которые передают номер на сайт, читает в памяти только первые шесть цифр (BIN) и хранит только их. Бесплатная версия не делает никаких внешних запросов.
Пока нет ни одного отзыва. Будьте первым.
Пока вопросов нет. Спроси — мы ответим в течение 24 часов.
Не тот вариант, что искали?
Делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.
Заказать кастомный модуль
Покупка модуля
—
