Перейти до основного вмісту

Зміни в 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, заголовком 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() (джерело правди для ключів бакетів rate-limit, captcha siteverify remoteip та хешів IP статистики) тепер застосовує сувору модель довіри: REMOTE_ADDR є мінімумом, CF-Connecting-IP враховується лише тоді, коли безпосередній пір знаходиться в поточному діапазоні IP Cloudflare, а X-Forwarded-For враховується лише тоді, коли безпосередній пір знаходиться у списку довірених проксі, налаштованому в адмін-панелі, з обходом справа наліво, який пропускає довірені/CF вузли, перш ніж визначити IP відвідувача.
  • Нове: Налаштування cap_trust_cloudflare_headers (за замовчуванням ВИМК.) — можливість довіряти CF-Connecting-IP при використанні Cloudflare. Plugin містить пакетний знімок CIDR Cloudflare та оновлює його щотижня через wp-cron з пакетним резервним варіантом у разі збою оновлення.
  • Нове: Налаштування cap_trusted_proxies — текстова область для CIDR або чистих IP (по одному на рядок, дозволені коментарі #) зі списком ваших власних фронт-проксі / балансувальників навантаження. Без цього X-Forwarded-For ігнорується навіть при увімкненні rate-limit.
  • Нове: Автовиявлення ймовірної конфігурації Cloudflare / проксі при першому увімкненні з можливістю натискання "Застосувати виявлені налаштування" у сповіщенні адмін-панелі. Plugin ніколи не перезаписує ваші збережені значення; якщо подальший трафік свідчить, що ваша конфігурація більше не відповідає дійсності (наприклад, Cloudflare змінив діапазони CIDR, а ваш CIDR проксі застарів), з'являється незнімабельне сповіщення про розбіжність із рекомендованим оновленням.
  • Виправлено: У невидимому режимі більше не відбувається тихе зниження cap_security_level до FAST — буде поважаний рівень, налаштований адміністратором. Доступно новий фільтр wu_cap_server_security_level для сайтів, які хочуть власну логіку.
  • Виправлено: Лічильник статистики rate_limits_triggered тепер збільшується при кожному блокуванні, а не лише на рідкісному шляху "запасного захисту" після успіху.
  • Виправлено: Captcha_Core::get_client_ip() тепер є єдиним джерелом правди для атрибуції IP відвідувача в rate-limiter, captcha-провайдерах (reCAPTCHA + hCaptcha siteverify) та статистиці — це усуває вектор підробки, коли запити безпосередньо з origin-сервера з підробленим заголовком CF-Connecting-IP могли бути зараховані за підробленим IP замість реального піра.
  • Виправлено: Rate-limit ворота для класичного чекауту WooCommerce тепер спрацьовують на template_redirect (пріоритет 1), а не на woocommerce_before_checkout_form. Хук на рівні форми ніколи не спрацьовує, коли кошик порожній, тому трафік, який ніколи не додавав товар, обходив limiter повністю.
  • Виправлено: Rate-limit ворота для оплати за товар WooCommerce тепер спрацьовують на template_redirect, а не на woocommerce_before_pay_action. Останній спрацьовує лише після успішної перевірки wp_verify_nonce('woocommerce-pay'), що означає, що неавторизовані зловмисники (реальна модель загрози) ніколи не активували limiter.
  • Виправлено: Rate-limit ворота для чекауту WooCommerce Store API (блоки) тепер спрацьовують на rest_pre_dispatch, а не на woocommerce_store_api_checkout_update_order_from_request. Останній спрацьовує лише після того, як Store API валідує поля кошика та виставлення рахунку, тому неавторизовані боти отримували 400 від валідатора і ніколи не активували limiter.
  • Виправлено: Rate-limit ворота для inline-login Ultimate Multisite тепер спрацьовують на wu_ajax_nopriv_wu_inline_login пріоритет 1 (та на віддзеркаленні для авторизованих) замість wu_before_inline_login. Останній спрацьовує лише після успішної перевірки check_ajax_referer('wu_checkout'), тому неавторизовані боти без валідного nonce wu_checkout отримували 403 і ніколи не активували limiter.
  • Виправлено: Rate_Limiter::enforce() тепер застосовує захист "один раз на запит", ключовий за surface|ip, тому upstream хуки, які спрацьовують двічі при рендері (зокрема wu_setup_checkout в Ultimate Multisite), більше не зменшують ефективний поріг rate-limit вдвічі.
  • Виправлено: Ворота rate-limit більше не звертаються до Captcha_Core::is_whitelisted() (фільтр wu_captcha_whitelisted). Цей фільтр сигналізує "captcha вже оброблено іншою поверхнею" і є ортогональним до захисту від спаму — інтеграція WooCommerce підключала його, щоб пропустити captcha WordPress при наявності nonce Woo, що впливало на підрахунок rate-limit і дозволяло POST-запитам Woo обходити limiter. Тепер єдиним обходом є rate-limit-специфічний фільтр wu_cap_rate_limit_whitelist_ip.

Версія: 1.3.2 - Випущено 2026-01-27

  • Виправлено: Віджет Cap не відображається на формах чекауту, створених за допомогою Elementor або інших page builders.
  • Виправлено: Кастомний елемент cap-widget видаляється санітизацією wp_kses().
  • Покращено: Використання викликового контенту (callable content) для поля captcha чекауту, щоб обійти фільтрацію HTML.
  • Покращено: Спрощено JavaScript з резервним варіантом для крайніх випадків.

Версія: 1.3.1 - Випущено 2026-01-26

  • Виправлено: Невидимий режим Cap Captcha більше не автоматично вирішує на динамічних формах чекауту Ultimate Multisite.
  • Покращено: Скрипт Cap чекауту тепер використовує MutationObserver для виявлення динамічно завантажених віджетів.
  • Покращено: Додано перехоплення кнопки чекауту для очікування токена перед відправкою.

Версія: 1.3.0 - Випущено 2026-01-27

  • Нове: Інтеграція чекауту WooCommerce Blocks з перехопленням Store API fetch.
  • Нове: Підтримка невидимого captcha для чекауту WooCommerce (hCaptcha invisible, reCAPTCHA v2 invisible, v3).
  • Нове: Окремої сторінки налаштувань для використання без Ultimate Multisite.
  • Нове: Jetpack Autoloader для запобігання конфліктам залежностей.
  • Виправлено: hCaptcha не відображається на динамічному чекауті Ultimate Multisite (контент, завантажений через AJAX).
  • Виправлено: Captcha не оновлюється/скидається при помилках валідації форми.
  • Виправлено: hCaptcha не відображається на сторінці чекауту WooCommerce.
  • Виправлено: Помилка "reCAPTCHA class not found" (додано PHP бібліотеку google/recaptcha).
  • Покращено: Виявлення помилок через WordPress hooks, MutationObserver та AJAX interception.
  • Покращено: Описи налаштувань тепер включають URL-адреси dashboard для ключів API.

Версія: 1.2.2 - Випущено 2026-01-24

  • Виправлено: Captcha не відображається на елементі форми в Ultimate Multisite Login Form (неправильне співпадіння імені фільтра форми).
  • Виправлено: HTML віджету Cap видаляється санітизацією wp_kses().
  • Виправлено: Селектори JavaScript не знаходять форми з слешами в ID елементів.
  • Додано: Хук фільтра wu_kses_allowed_html для classaddons, щоб розширити дозволені HTML теги.
  • Видалено: Файли JavaScript мертвий код замінено скриптами, специфічними для провайдера.

Версія: 1.2.1 - Випущено 2026-01-23

  • Виправлено: Валідація токена Cap Captcha не працює в мультисайтових середовищах (тепер використовує транзієнти на рівні мережі).
  • Виправлено: Captcha тепер відображається послідовно для всіх користувачів незалежно від статусу входу.
  • Виправлено: Розбіжність між відображенням та валідацією captcha, яка спричиняла збої чекауту.

Версія: 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.
  • Покращено: Перероблена кодова база у модульні класи провайдерів.
  • Покращено: Краще розділення відповідальності з виділеним класом менеджера.
  • Виправлено: Покращення безпеки для санітизації змінної $_SERVER.
  • Виправлено: Конфігурація тестів PHPUnit для умов іменування WordPress.

Версія: 1.0.1 - Випущено 2025-09-28

  • Змінено префікс на ultimate-multisite; оновлено text domain; збільшено версію.