Zmiany w Captcha
Wersja: 1.5.0 - Wydano 2026-05-22
- Nowość: Ogranicznik liczby żądań typu hard-stop — liczy każde żądanie GET i POST na zabezpieczonych stronach (wp-login / register / lost-password / comments, WooCommerce my-account / checkout / pay-for-order, Ultimate Multisite checkout / inline-login) i odpowiada kodem HTTP 429, nagłówkiem
Retry-Afteroraz losowym opóźnieniem (tarpit sleep) w zakresie 1–5 sekund (maksymalnie 15 sekund). - Nowość: Ustawienia
cap_rate_limit_tarpit_min/cap_rate_limit_tarpit_maxpozwalające dostosować okno działania opóźnienia. - Nowość: Filtr
wu_cap_rate_limit_whitelist_ipdo wyłączenia z limitowania określonych zakresów IP. - Nowość: Akcja
wu_cap_rate_limit_will_block, która wyzwala się tuż przed wysłaniem odpowiedzi typu hard-stop. - Nowość: Wykrywanie adresu IP klienta odporne na podszywanie się. Funkcja
Captcha_Core::get_client_ip()(źródło prawdy dla kluczy koszyka limitowania żądań, captcha siteverifyremoteiporaz haszy IP statystyk) teraz wymusza ścisły model zaufania:REMOTE_ADDRjest podstawą,CF-Connecting-IPjest uwzględniany tylko wtedy, gdy bezpośredni peer znajduje się w bieżącym zakresie IP Cloudflare, aX-Forwarded-Forjest uwzględniany tylko wtedy, gdy bezpośredni peer znajduje się w liście zaufanych proxy skonfigurowanych w panelu administracyjnym, z przechodzeniem od prawej do lewej, które pomija zaufane/CF skoki, zanim ustali adres IP odwiedzającego. - Nowość: Ustawienie
cap_trust_cloudflare_headers(domyślnie WYŁĄCZONE) — możliwość włączenia zaufania doCF-Connecting-IPw przypadku działania za Cloudflare. Plugin zawiera pakietowy zrzut CIDR Cloudflare i odświeża go cotygodniowo za pomocą wp-cron, z zapasowym mechanizmem w przypadku niepowodzenia odświeżenia. - Nowość: Ustawienie
cap_trusted_proxies— pole tekstowe z CIDR-ami lub surowymi adresami IP (po jednym na linię, dozwolone komentarze#) zawierające adresy proxy / load-balancerów, które są na pierwszej linii. Bez tego,X-Forwarded-Forjest ignorowany nawet wtedy, gdy limitowanie żądań jest włączone. - Nowość: Automatyczne wykrywanie prawdopodobnego środowiska Cloudflare / proxy przy pierwszym włączeniu, z komunikatem w panelu administracyjnym „Zastosuj wykryte ustawienia”. Plugin nigdy nie nadpisuje zapisanych wartości; jeśli późniejszy ruch sugeruje, że konfiguracja nie odpowiada rzeczywistości (np. Cloudflare zmienił zakresy CIDR, a Twój zakres proxy jest przestarzały), pojawia się nieusuwalny komunikat o niezgodności z zalecaną aktualizacją.
- Poprawiono: Tryb niewidoczny nie obniża już cicho
cap_security_leveldo FAST — jest respektowany poziom skonfigurowany przez administratora. Dostępny jest nowy filtrwu_cap_server_security_leveldla stron, które chcą mieć niestandardową logikę. - Poprawiono: Licznik statystyk
rate_limits_triggeredzwiększa się teraz przy każdym zablokowaniu, a nie tylko na rzadkiej ścieżce powrotnej po pomyślnym przejściu. - Poprawiono:
Captcha_Core::get_client_ip()jest teraz jedynym źródłem prawdy dla przypisania adresu IP odwiedzającego w zakresie limitowania żądań, dostawców captcha (reCAPTCHA + hCaptchasiteverify) i statystyk — zamyka wektor podszywania się, w którym bezpośrednie żądania z oryginalnego serwera z fałszywym nagłówkiemCF-Connecting-IPmogły zostać przypisane do podszywanego IP zamiast rzeczywistego peer-a. - Poprawiono: Bramka limitowania żądań dla klasycznego checkoutu WooCommerce wyzwala się teraz na
template_redirect(priorytet 1) zamiastwoocommerce_before_checkout_form. Hook na poziomie formularza nigdy nie wyzwala się, gdy koszyk jest pusty, więc ruch typu zalew, który nigdy nie dodawał produktu, omijał limitator. - Poprawiono: Bramka limitowania żądań dla płatności za zamówienie WooCommerce wyzwala się teraz na
template_redirectzamiastwoocommerce_before_pay_action. Ostatni wyzwala się tylko po pomyślnym wykonaniuwp_verify_nonce('woocommerce-pay'), co oznacza, że nieautoryzowani atakujący (rzeczywisty model zagrożenia) nigdy nie aktywowali limitatora. - Poprawiono: Bramka limitowania żądań dla checkoutu WooCommerce Store API (bloków) wyzwala się teraz na
rest_pre_dispatchzamiastwoocommerce_store_api_checkout_update_order_from_request. Ostatni wyzwala się tylko po walidacji koszyka i pól rozliczeniowych przez Store API, więc nieautoryzowane boty otrzymały 400 od walidatora i nigdy nie aktywowały limitatora. - Poprawiono: Bramka limitowania żądań dla inline-login Ultimate Multisite wyzwala się teraz na
wu_ajax_nopriv_wu_inline_loginpriorytet 1 (i lustrzany dla zalogowanych) zamiastwu_before_inline_login. Ostatni wyzwala się tylko po pomyślnym wykonaniucheck_ajax_referer('wu_checkout'), więc nieautoryzowane boty bez ważnego noncuwu_checkoutotrzymały 403 i nigdy nie aktywowały limitatora. - Poprawiono:
Rate_Limiter::enforce()teraz stosuje ochronę typu raz na żądanie, kluczowaną przezsurface|ip, dzięki czemu hooki wyzwalane dwa razy podczas renderowania (zwłaszczawu_setup_checkoutw Ultimate Multisite) nie zmniejszają efektywnego progu limitowania żądań. - Poprawiono: Bramki limitowania żądań nie konsultują już
Captcha_Core::is_whitelisted()(filtrwu_captcha_whitelisted). Ten filtr sygnalizuje „captcha już obsłużony przez inną bramkę” i jest niezależny od ochrony przed zalewem — integracja WooCommerce hakowała go, aby pominąć captcha logowania WordPress, gdy był obecny nonce Woo, co wpłynęło na liczenie żądań i pozwoliło POST-om Woo ominąć limitator. Jedyny bypass, który działa teraz, to specyficzny dla limitowania żądań filtrwu_cap_rate_limit_whitelist_ip.
Wersja: 1.3.2 - Wydano 2026-01-27
- Poprawiono: Widget Captcha nie renderuje się na formularzach checkout używających Elementora lub innych page builderów.
- Poprawiono: Element niestandardowy
cap-widgetjest usuwany przez sanitacjęwp_kses(). - Ulepszono: Użycie treści wywoływalnej dla pola captcha w checkout, aby ominąć filtrowanie HTML.
- Ulepszono: Uproszczony JavaScript z mechanizmem zapasowym dla przypadków brzegowych.
Wersja: 1.3.1 - Wydano 2026-01-26
- Poprawiono: Tryb niewidoczny Captcha nie rozwiązuje automatycznie na dynamicznych formularzach checkout Ultimate Multisite.
- Ulepszono: Skrypt checkout Captcha używa MutationObserver do wykrywania dynamicznie ładowanych widgetów.
- Ulepszono: Dodano przechwytywanie przycisku checkout, aby czekać na token przed wysłaniem.
Wersja: 1.3.0 - Wydano 2026-01-27
- Nowość: Integracja checkout WooCommerce Blocks z przechwytywaniem pobierania Store API.
- Nowość: Wsparcie dla niewidocznego captcha w checkout WooCommerce (hCaptcha niewidoczny, reCAPTCHA v2 niewidoczny, v3).
- Nowość: Samodzielna strona ustawień do użycia bez Ultimate Multisite.
- Nowość: Jetpack Autoloader w celu zapobiegania konfliktom zależności.
- Poprawiono: hCaptcha nie renderuje się na dynamicznym checkoutie Ultimate Multisite (zawartość ładowana przez AJAX).
- Poprawiono: Captcha nie odświeża się/resetuje w przypadku błędów walidacji formularza.
- Poprawiono: hCaptcha nie wyświetla się na stronie checkout WooCommerce.
- Poprawiono: Błąd „reCAPTCHA class not found” (dodano bibliotekę PHP google/recaptcha).
- Ulepszono: Wykrywanie błędów za pomocą hooków WordPress, MutationObserver i przechwytywania AJAX.
- Ulepszono: Opisy ustawień zawierają teraz adresy URL dashboard dla kluczy API.
Wersja: 1.2.2 - Wydano 2026-01-24
- Poprawiono: Captcha nie wyświetla się na elemencie formularza Ultimate Multisite Login Form (niezgodność nazwy filtra formularza).
- Poprawiono: HTML widgetu Captcha jest usuwany przez sanitację
wp_kses(). - Poprawiono: Selektory JavaScript nie znajdują formularzy z ukośnikami w identyfikatorach elementów.
- Dodano: Hook filtra
wu_kses_allowed_htmldla classaddons, aby rozszerzyć dozwolone tagi HTML. - Usunięto: Pliki JavaScript z martwym kodem zastąpione skryptami specyficznymi dla dostawcy.
Wersja: 1.2.1 - Wydano 2026-01-23
- Poprawiono: Walidacja tokena Captcha zawodzi w środowiskach multisite (teraz używa transientów na poziomie sieci).
- Poprawiono: Captcha renderuje się teraz spójnie dla wszystkich użytkowników, niezależnie od statusu logowania.
- Poprawiono: Niezgodność między renderowaniem a walidacją captcha, która powodowała błędy checkoutu.
Wersja: 1.2.0 - Wydano 2026-01-21
- Nowość: Cap Captcha - self-hosted proof-of-work captcha, domyślnie włączony po aktywacji.
- Nowość: Ochrona zero-konfiguracyjna — aktywuj addon i jesteś natychmiast chroniony.
- Nowość: Architektura wielokształtnego dostawcy captcha (Polymorphic) dla łatwej rozszerzalności.
- Nowość: Ochrona checkout WooCommerce Store API przed atakami testowania kart.
- Nowość: Dashboard śledzenia statystyk pokazujący wyzwania, weryfikacje i zablokowane ataki.
- Nowość: Wstępne ustawienia poziomu bezpieczeństwa (Fast, Medium, Max) dla trudności Cap Captcha.
- Nowość: Klasy bazowe dla dostawców reCAPTCHA i hCaptcha.
- Ulepszono: Przeprojektowany kod źródłowy na modułowe klasy dostawców.
- Ulepszono: Lepsza separacja odpowiedzialności dzięki dedykowanej klasie menedżera.
- Poprawiono: Ulepszenia bezpieczeństwa dla sanitacji zmiennej $_SERVER.
- Poprawiono: Konfiguracja testów PHPUnit dla konwencji nazewnictwa WordPress.
Wersja: 1.0.1 - Wydano 2025-09-28
- Zmieniono prefiks na ultimate-multisite; zaktualizowano domena tekstu; zwiększono numer wersji.