Промени в лога на Captcha
Версия: 1.5.0 - Публикувана на 2026-05-22
- Ново: Хардкоден ограничителен лимитер на заявки (rate limiter) — брои всяка GET и POST заявка към защитени от Captcha места (wp-login / register / lost-password / comments, WooCommerce my-account / checkout / pay-for-order, Ultimate Multisite checkout / inline-login) и отговаря с HTTP 429, заглавie
Retry-Afterи рандомизиран спинг (tarpit sleep) (1–5 сек., с максимално ограничение от 15 сек.). - Ново: Настройки
cap_rate_limit_tarpit_min/cap_rate_limit_tarpit_maxза настройка на прозореца на спинг. - Ново: Филтър
wu_cap_rate_limit_whitelist_ipза изключение на доверени IP диапазони. - Ново: Действие
wu_cap_rate_limit_will_block, което се активира непосредствено преди изпращането на отговор с хард-стоп. - Ново: Детекция на client-IP устойчива на фалшиви данни (spoof-resistant).
Captcha_Core::get_client_ip()(източникът на истината за ключовете на кувета на ограничението на заявки, captcha siteverifyremoteipи хешовете на IP за статистика) сега прилага строго доверителна модел:REMOTE_ADDRе минималното ниво,CF-Connecting-IPсе уважава само когато непосредственият пиър е вътре в текущ Cloudflare IP диапазон, аX-Forwarded-Forсе уважава само когато непосредственият пиър е в списъка с доверени прокси, зададен от администратора, като се извършва преминаване отдясно наляво, което пропуска доверени/CF хопове, преди да установи IP на посетителя. - Ново: Настройка
cap_trust_cloudflare_headers(по подразбиране OFF) — възможност за доверие наCF-Connecting-IPпри работа зад Cloudflare. Плъгинът включва запазен снимок (snapshot) на Cloudflare CIDR и го обновява седмично чрез wp-cron, като има и резервен план, ако обновяването се провали. - Ново: Настройка
cap_trusted_proxies— текстова област за CIDR или чисти IP адреси (по един на ред, разрешени са#коментари), които изброяват вашите собствени фронт-лайн прокси / балансьори на натоварване. Без товаX-Forwarded-Forсе игнорира, дори когато ограничението на заявки е активирано. - Ново: Автоматично откриване на вероятната конфигурация на Cloudflare / прокси при първо активиране, с известие в админ панела с един клик "Приложи откритите настройки". Плъгинът никога не презаписва запазените ви стойности; ако по-късното трафик покаже, че вашата конфигурация вече не съответства на реалността (напр. 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. Хукът на ниво форма никога не се активира, когато количката е празна, така че трафикът, който никога не добавя продукт, заобикаляше лимитера изцяло. - Поправено: Ограничителният лимитер на заявки за плащане по поръчка на WooCommerce сега се активира на
template_redirect, вместо наwoocommerce_before_pay_action. Последният се активира само след успешно изпълнение наwp_verify_nonce('woocommerce-pay'), което означава, че неавторизираните атакувачи (реален модел на заплаха) никога не активираха лимитера. - Поправено: Ограничителният лимитер на заявки за checkout на WooCommerce Store API (блоки) сега се активира на
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()сега прилага защита "веднъж на заявка" (once-per-request), ключовената поsurface|ip, така че горните хукове, които се активират два пъти при рендиране (особеноwu_setup_checkoutв Ultimate Multisite), вече не намаляват ефективния праг на ограничението на заявки. - Поправено: Портите на ограничение на заявки вече не консултираха
Captcha_Core::is_whitelisted()(филтърwu_captcha_whitelisted). Този филтър сигнализира "captcha вече е обработен от друг ресурс" и е ортогонален на защитата от наводнение (flood protection) — интеграцията с WooCommerce го използваше, за да пропусне Captcha за входа на WordPress, когато беше присъстният Woo nonce, което се разнесе в броите на заявките и позволи на POST заявките на Woo да заобиколят лимитера. Единственият филтър, който сега прилага това заобикаляне, е специфичният за ограничението на заявкиwu_cap_rate_limit_whitelist_ip.
Версия: 1.3.2 - Публикувана на 2026-01-27
- Поправено: Виджетът Captcha не се рендира на checkout форми, използващи Elementor или други page builders.
- Поправено: Кастомният елемент
cap-widgetе изтрит от санитаризацията наwp_kses(). - Подобрено: Използване на съдържание, което може да бъде извикано (callable content) за полето Captcha на checkout, за да се заобиколи филтрирането на HTML.
- Подобрено: JavaScript е опростено с резервен план за крайни случаи.
Версия: 1.3.1 - Публикувана на 2026-01-26
- Поправено: Избледняващият режим на Captcha не решава автоматично на динамични checkout форми на Ultimate Multisite.
- Подобрено: Скриптът за checkout на Captcha сега използва MutationObserver, за да открива динамично заредени виджети.
- Подобрено: Добавена прекъсване на бутона за checkout, за да чака за токен преди изпращане.
Версия: 1.3.0 - Публикувана на 2026-01-27
- Ново: Интеграция на WooCommerce Blocks checkout с прекъсване на извличане на Store API.
- Ново: Поддръжка на избледняващ Captcha за WooCommerce checkout (hCaptcha invisible, reCAPTCHA v2 invisible, v3).
- Ново: Самостоятелна страница за настройки за използване без Ultimate Multisite.
- Ново: Jetpack Autoloader за предотвратяване на конфликти в зависимостите.
- Поправено: hCaptcha не се рендира на динамичен checkout на Ultimate Multisite (съдържание, заредено с AJAX).
- Поправено: Captcha не се обновява/сброява при грешки при валидиране на формата.
- Поправено: hCaptcha не се показва на страницата WooCommerce checkout.
- Поправено: Грешка "reCAPTCHA class not found" (добавена PHP библиотека google/recaptcha).
- Подобрено: Откриване на грешки чрез WordPress хукове, MutationObserver и AJAX прекъсване.
- Подобрено: Описанията на настройките сега включват URL адреси на dashboard за API ключове.
Версия: 1.2.2 - Публикувана на 2026-01-24
- Поправено: Captcha не се показва на Ultimate Multisite Login Form Element (несъответствие в името на филтъра на формата).
- Поправено: HTML на виджета Captcha е изтрит от санитаризацията на
wp_kses(). - Поправено: JavaScript селектори не намират форми с наклоненици в ID на елементите.
- Добавен: Хук на филтър
wu_kses_allowed_htmlза classaddons, за да се разширят разрешените HTML тагове. - Премахнато: JavaScript файлове с мъртъв код, заменени с скриптове, специфични за доставчика.
Версия: 1.2.1 - Публикувана на 2026-01-23
- Поправено: Валидацията на токена на Captcha се проваля в мултисайт среди (сега използва трансценти на ниво мрежа).
- Поправено: Captcha сега се рендира последователно за всички потребители, независимо от статуса на вход.
- Поправено: Несъответствие между рендирането и валидирането на Captcha, което причиняваше провали на checkout.
Версия: 1.2.0 - Публикувана на 2026-01-21
- Ново: Cap Captcha - самохостван proof-of-work captcha, активиран по подразбиране при активация.
- Ново: Защита с нулева конфигурация - активирайте адъона и веднага сте защитени.
- Ново: Полиморфна архитектура на доставчици на captcha за лесна разширимост.
- Ново: Защита на checkout на WooCommerce Store API срещу атаки с тестване на карти.
- Ново: Панел за статистика, показващ предизвикателства, верификации и блокирани атаки.
- Ново: Предварително зададени нива на сигурност (Fast, Medium, Max) за трудност на Cap Captcha.
- Ново: Абстрактни базови класове за доставчиците reCAPTCHA и hCaptcha.
- Подобрено: Преструктуриран код в модулни класове на доставчици.
- Подобрено: По-добра разделяне на отговорностите с посветен клас мениджър.
- Поправено: Подобрения на сигурността за санитаризация на променливата $_SERVER.
- Поправено: Конфигурация на PHPUnit тестове за конвенциите на именопис на WordPress.
Версия: 1.0.1 - Публикувана на 2025-09-28
- Преименуван префикс на ultimate-multisite; актуализиран домейн на текста; повишаване на версията.