Журнал изменений Captcha
Version: 1.5.0 - Выпущено 2026-05-22
- Новое: Жёсткий ограничитель частоты — считает каждый GET и POST на поверхностях, защищённых captcha (wp-login / register / lost-password / comments, WooCommerce my-account / checkout / pay-for-order, Ultimate Multisite checkout / inline-login), и отвечает HTTP 429, заголовком
Retry-Afterи рандомизированной tarpit-задержкой (1–5 с, с жёстким пределом 15 с). - Новое: Настройки
cap_rate_limit_tarpit_min/cap_rate_limit_tarpit_maxдля настройки окна tarpit. - Новое: Фильтр
wu_cap_rate_limit_whitelist_ipдля исключения доверенных диапазонов IP. - Новое: Действие
wu_cap_rate_limit_will_block, которое срабатывает непосредственно перед отправкой жёсткого ответа. - Новое: Устойчивая к подмене детекция IP клиента.
Captcha_Core::get_client_ip()(источник истины для ключей корзин ограничителя частоты, captcha siteverifyremoteipи IP-хешей статистики) теперь применяет строгую модель доверия: REMOTE_ADDR является базовым уровнем,CF-Connecting-IPучитывается только когда непосредственный узел находится внутри актуального диапазона IP Cloudflare, аX-Forwarded-Forучитывается только когда непосредственный узел входит в настроенный администратором список доверенных прокси, с проходом справа налево, который пропускает доверенные/CF-переходы перед выбором IP посетителя. - Новое: Настройка
cap_trust_cloudflare_headers(по умолчанию OFF) — включите доверие кCF-Connecting-IP, когда сайт находится за Cloudflare. Plugin поставляется со встроенным снимком Cloudflare CIDR и обновляет его еженедельно через wp-cron, используя встроенный запасной вариант, если обновление не удаётся. - Новое: Настройка
cap_trusted_proxies— текстовая область с CIDR или простыми IP (по одному на строку, комментарии#разрешены), перечисляющая ваши собственные фронтовые прокси / балансировщики нагрузки. Без этогоX-Forwarded-Forигнорируется, даже когда ограничитель частоты включён. - Новое: Автоопределение при первом включении вероятной конфигурации Cloudflare / прокси с уведомлением администратора «Применить обнаруженные настройки» в один клик. Plugin никогда не перезаписывает ваши сохранённые значения; если последующий трафик показывает, что ваша конфигурация больше не соответствует реальности (например, Cloudflare изменил диапазоны CIDR, и ваш прокси CIDR теперь устарел), появляется неотклоняемое уведомление о несоответствии с рекомендуемым обновлением.
- Исправлено: Невидимый режим больше не понижает молча
cap_security_levelдо FAST — настроенный администратором уровень соблюдается. Новый фильтрwu_cap_server_security_levelдоступен для сайтов, которым нужна индивидуальная логика. - Исправлено: Счётчик статистики
rate_limits_triggeredтеперь увеличивается при каждой блокировке, а не только на редком резервном пути после успешной проверки. - Исправлено:
Captcha_Core::get_client_ip()теперь является единым источником истины для привязки IP посетителя во всём ограничителе частоты, провайдерах captcha (reCAPTCHA + hCaptchasiteverify) и статистике — закрыт вектор подмены, при котором прямые запросы к исходному серверу с поддельным заголовкомCF-Connecting-IPпопадали бы в корзину по поддельному IP вместо реального узла. - Исправлено: Шлюз ограничения частоты классического checkout WooCommerce теперь срабатывает на
template_redirect(приоритет 1) вместоwoocommerce_before_checkout_form. Хук уровня формы никогда не срабатывает, когда корзина пуста, поэтому flood-трафик, который никогда не добавляет продукт, полностью обходил ограничитель. - Исправлено: Шлюз ограничения частоты WooCommerce pay-for-order теперь срабатывает на
template_redirectвместоwoocommerce_before_pay_action. Последний срабатывает только после успешногоwp_verify_nonce('woocommerce-pay'), что означает, что неавторизованные злоумышленники (реальная модель угроз) никогда не запускали ограничитель. - Исправлено: Шлюз ограничения частоты checkout WooCommerce Store API (blocks) теперь срабатывает на
rest_pre_dispatchвместоwoocommerce_store_api_checkout_update_order_from_request. Последний срабатывает только после того, как Store API проверит корзину и поля биллинга, поэтому неавторизованные боты получали 400 от валидатора и никогда не запускали ограничитель. - Испра влено: Шлюз ограничения частоты inline-login Ultimate Multisite теперь срабатывает на
wu_ajax_nopriv_wu_inline_loginс приоритетом 1 (и зеркале для вошедших пользователей) вместоwu_before_inline_login. Последний срабатывает только после успешногоcheck_ajax_referer('wu_checkout'), поэтому неавторизованные боты без действительного wu_checkout nonce получали 403 и никогда не запускали ограничитель. - Исправлено:
Rate_Limiter::enforce()теперь применяет защиту один раз на запрос с ключомsurface|ip, поэтому вышестоящие хуки, которые срабатывают дважды за один рендеринг (особенноwu_setup_checkoutв Ultimate Multisite), больше не уменьшают эффективный порог ограничения частоты вдвое. - Исправлено: Шлюзы поверхностей ограничения частоты больше не обращаются к
Captcha_Core::is_whitelisted()(фильтрwu_captcha_whitelisted). Этот фильтр сигнализирует «captcha уже обработана другой поверхностью» и не связан с защитой от flood — интеграция WooCommerce использовала его, чтобы пропускать captcha входа WordPress, когда присутствовал Woo nonce, что попадало в подсчёт частоты и позволяло Woo POST обходить ограничитель. Специфичный для ограничения частоты фильтрwu_cap_rate_limit_whitelist_ip— единственный обход, который теперь применяется.
Version: 1.3.2 - Выпущено 2026-01-27
- Исправлено: Виджет Cap не отображался на формах checkout, использующих Elementor или другие конструкторы страниц
- Исправлено: Пользовательский элемент cap-widget удалялся санитаризацией wp_kses()
- Улучшено: Использование вызываемого содержимого для поля checkout captcha, чтобы обходить фильтрацию HTML
- Улучшено: Упрощён JavaScript с резервным вариантом для крайних случаев
Version: 1.3.1 - Выпущено 2026-01-26
- Исправлено: Невидимый режим Cap Captcha не решался автоматически на динамических формах checkout Ultimate Multisite
- Улучшено: Скрипт Cap checkout теперь использует MutationObserver для обнаружения динамически загружаемых виджетов
- Улучшено: Добавлен перехват кнопки checkout для ожидания token перед отправкой
Version: 1.3.0 - Выпущено 2026-01-27
- Новое: интеграция оформления заказа WooCommerce Blocks с перехватом запросов Store API
- Новое: поддержка невидимой captcha для оформления заказа WooCommerce (hCaptcha invisible, reCAPTCHA v2 invisible, v3)
- Новое: отдельная страница настроек для использования без Ultimate Multisite
- Н овое: Jetpack Autoloader для предотвращения конфликтов зависимостей
- Исправлено: hCaptcha не отображалась при динамическом оформлении заказа Ultimate Multisite (контент, загруженный через AJAX)
- Исправлено: Captcha не обновлялась/сбрасывалась при возникновении ошибок проверки формы
- Исправлено: hCaptcha не отображалась на странице оформления заказа WooCommerce
- Исправлено: ошибка «класс reCAPTCHA не найден» (добавлена PHP-библиотека google/recaptcha)
- Улучшено: обнаружение ошибок через хуки WordPress, MutationObserver и перехват AJAX
- Улучшено: описания настроек теперь включают URL Dashboard для API-ключей
Version: 1.2.2 - Выпущено 2026-01-24
- Исправлено: Captcha не отображалась в элементе формы входа Ultimate Multisite (несоответствие имени фильтра формы)
- Исправлено: HTML виджета Cap удалялся при санитизации wp_kses()
- Исправлено: JavaScript-селекторы не находили формы со слешами в ID элементов
- Добавлено: хук фильтра
wu_kses_allowed_htmlдля classaddons, позволяющий расширять разрешенные HTML-теги - Удалено: неиспользуемые JavaScript-файлы, замененные скриптами для конкретных провайдеров
Version: 1.2.1 - Выпущ ено 2026-01-23
- Исправлено: проверка токена Cap Captcha не работала в multisite-средах (теперь используются transients на уровне сети)
- Исправлено: Captcha теперь стабильно отображается для всех пользователей независимо от статуса входа
- Исправлено: несоответствие между отображением и проверкой captcha, которое вызывало сбои оформления заказа
Version: 1.2.0 - Выпущено 2026-01-21
- Новое: Cap Captcha — самостоятельно размещаемая captcha на основе proof-of-work, включенная по умолчанию при активации
- Новое: защита без настройки — активируйте addon, и защита сразу включена
- Новое: полиморфная архитектура провайдеров captcha для легкого расширения
- Новое: защита оформления заказа WooCommerce Store API от атак с тестированием карт
- Новое: Dashboard отслеживания статистики, показывающий задания, проверки и заблокированные атаки
- Новое: предустановки уровня безопасности (Fast, Medium, Max) для сложности Cap Captcha
- Новое: абстрактные базовые классы для провайдеров reCAPTCHA и hCaptcha
- Улучшено: кодовая база переработана в модульные классы провайдеров
- Улучшено: лучшее разделен ие ответственности с выделенным классом менеджера
- Fixed: Security improvements for $_SERVER variable sanitization
- Исправлено: конфигурация тестов PHPUnit для соглашений об именовании WordPress
Version: 1.0.1 - Выпущено 2025-09-28
- Переименован префикс в ultimate-multisite; обновлен text domain; повышена версия.