Captcha-wijzigingslog
Versie: 1.5.0 - Uitgebracht op 2026-05-22
- Nieuw: Snelheidsbegrenzer met harde stop — telt elke GET en POST op met captcha beschermde oppervlakken (wp-login / register / lost-password / comments, WooCommerce my-account / checkout / pay-for-order, Ultimate Multisite checkout / inline-login) en antwoordt met HTTP 429, een
Retry-Afterheader en een willekeurige tarpit-slaap (1–5s, hard begrensd op 15s). - Nieuw:
cap_rate_limit_tarpit_min/cap_rate_limit_tarpit_maxinstellingen om het tarpit-venster af te stemmen. - Nieuw:
wu_cap_rate_limit_whitelist_ipfilter om vertrouwde IP-bereiken vrij te stellen. - Nieuw:
wu_cap_rate_limit_will_blockactie die onmiddellijk afgaat voordat de harde-stoprespons wordt verzonden. - Nieuw: Spoofbestendige client-IP-detectie.
Captcha_Core::get_client_ip()(de bron van waarheid voor bucket-sleutels van snelheidslimieten, captcha siteverifyremoteipen statistiek-IP-hashes) dwingt nu een strikt vertrouwensmodel af: REMOTE_ADDR is de basis,CF-Connecting-IPwordt alleen gehonoreerd wanneer de directe peer binnen een actueel Cloudflare-IP-bereik valt, enX-Forwarded-Forwordt alleen gehonoreerd wanneer de directe peer in de door de beheerder geconfigureerde lijst met vertrouwde proxy's staat, met een wandeling van rechts naar links die vertrouwde/CF-hops overslaat voordat het bezoekers-IP wordt vastgesteld. - Nieuw:
cap_trust_cloudflare_headersinstelling (standaard UIT) — kies ervoor omCF-Connecting-IPte vertrouwen wanneer je achter Cloudflare zit. De plugin levert een meegeleverde Cloudflare CIDR-snapshot en vernieuwt deze wekelijks via wp-cron met meegeleverde fallback als het vernieuwen mislukt. - Nieuw:
cap_trusted_proxiesinstelling — tekstgebied met CIDR's of kale IP's (één per regel,#reacties toegestaan) met je eigen front-line proxy's / load-balancers. Zonder dit wordtX-Forwarded-Forgenegeerd, zelfs wanneer de snelheidsbegrenzer is ingeschakeld. - Nieuw: Automatische detectie bij eerste inschakeling van waarschijnlijke Cloudflare-/proxyhouding met een beheerdermelding "Gedetecteerde instellingen toepassen" met één klik. De plugin overschrijft nooit je opgeslagen waarden; als later verkeer suggereert dat je configuratie niet langer overeenkomt met de werkelijkheid (bijv. Cloudflare heeft CIDR-bereiken gewijzigd en je proxy-CIDR is nu verouderd), verschijnt er een niet-wegklikbare mismatchmelding met de aanbevolen update.
- Opgelost: Onzichtbare modus verlaagt
cap_security_levelniet langer stilzwijgend naar FAST — het door de beheerder geconfigureerde niveau wordt gehonoreerd. Een nieuwwu_cap_server_security_levelfilter is beschikbaar voor sites die maatwerklogica willen. - Opgelost: Statistiekenteller
rate_limits_triggeredwordt nu bij elke blokkade verhoogd, niet alleen op het zeldzame backstop-pad na succes. - Opgelost:
Captcha_Core::get_client_ip()is nu de enige bron van waarheid voor bezoekers-IP-toeschrijving binnen de snelheidsbegrenzer, captcha-providers (reCAPTCHA + hCaptchasiteverify) en statistieken — dit sluit een spoofingvector waarbij directe aanvragen naar de origin-server met een vervalsteCF-Connecting-IPheader zouden zijn gebucket op het vervalste IP in plaats van de echte peer. - Opgelost: De WooCommerce klassieke afreken-snelheidslimietpoort gaat nu af op
template_redirect(prioriteit 1) in plaats vanwoocommerce_before_checkout_form. De hook op formulierniveau gaat nooit af wanneer de winkelwagen leeg is, dus floodverkeer dat nooit een product toevoegt, omzeilde de begrenzer volledig. - Opgelost: De WooCommerce betalen-voor-bestelling-snelheidslimietpoort gaat nu af op
template_redirectin plaats vanwoocommerce_before_pay_action. Die laatste gaat alleen af nadatwp_verify_nonce('woocommerce-pay')slaagt, wat betekent dat unauth aanvallers (het daadwerkelijke dreigingsmodel) de begrenzer nooit activeerden. - Opgelost: De WooCommerce Store API (blokken) afreken-snelheidslimietpoort gaat nu af op
rest_pre_dispatchin plaats vanwoocommerce_store_api_checkout_update_order_from_request. Die laatste gaat pas af nadat Store API de winkelwagen- en factuurvelden valideert, dus unauth bots kregen een 400 van de validator en activeerden de begrenzer nooit. - Opgelost: De Ultimate Multisite inline-login-snelheidslimietpoort gaat nu af op
wu_ajax_nopriv_wu_inline_loginprioriteit 1 (en de ingelogde spiegel) in plaats vanwu_before_inline_login. Die laatste gaat alleen af nadatcheck_ajax_referer('wu_checkout')slaagt, dus unauth bots zonder geldige wu_checkout nonce kregen een 403 en activeerden de begrenzer nooit. - Opgelost:
Rate_Limiter::enforce()past nu een bewaker eenmaal per aanvraag toe, gesleuteld opsurface|ip, zodat upstream hooks die twee keer per render afgaan (met namewu_setup_checkoutin Ultimate Multisite) de effectieve snelheidslimietdrempel niet langer halveren. - Opgelost: Snelheidslimiet-oppervlakpoorten raadplegen niet langer
Captcha_Core::is_whitelisted()(wu_captcha_whitelistedfilter). Dat filter signaleert "captcha al afgehandeld door een ander oppervlak" en staat los van floodbescherming — de WooCommerce integratie hookte erop om de WordPress login-captcha over te slaan wanneer een Woo nonce aanwezig was, wat doorwerkte in snelheidstellingen en Woo POSTs de begrenzer liet ontwijken. Het snelheidslimietspecifiekewu_cap_rate_limit_whitelist_ipfilter is de enige omzeiling die nu van toepassing is.
Versie: 1.3.2 - Uitgebracht op 2026-01-27
- Opgelost: Cap-widget werd niet weergegeven op afrekenformulieren die Elementor of andere paginabouwers gebruiken
- Opgelost: cap-widget aangepast element werd gestript door wp_kses()-sanitisatie
- Verbeterd: Gebruik aanroepbare inhoud voor het afreken-captchaveld om HTML-filtering te omzeilen
- Verbeterd: Vereenvoudigde JavaScript met fallback voor randgevallen
Versie: 1.3.1 - Uitgebracht op 2026-01-26
- Opgelost: Cap Captcha onzichtbare modus loste niet automatisch op bij dynamische Ultimate Multisite afrekenformulieren
- Verbeterd: Cap-afrekenscript gebruikt nu MutationObserver om dynamisch geladen widgets te detecteren
- Verbeterd: Afrekenknopinterceptie toegevoegd om op token te wachten vóór verzending
Version: 1.3.0 - Uitgebracht op 2026-01-27
- Nieuw: WooCommerce Blocks checkout-integratie met Store API fetch-onderschepping
- Nieuw: Ondersteuning voor onzichtbare captcha voor WooCommerce checkout (hCaptcha invisible, reCAPTCHA v2 invisible, v3)
- Nieuw: Zelfstandige instellingenpagina voor gebruik zonder Ultimate Multisite
- Nieuw: Jetpack Autoloader voor preventie van dependency-conflicten
- Opgelost: hCaptcha werd niet gerenderd op dynamische Ultimate Multisite checkout (via AJAX geladen content)
- Opgelost: Captcha werd niet vernieuwd/gereset wanneer formulier-validatiefouten optreden
- Opgelost: hCaptcha werd niet weergegeven op WooCommerce checkout-pagina
- Opgelost: reCAPTCHA class not found-fout (google/recaptcha PHP-bibliotheek toegevoegd)
- Verbeterd: Foutdetectie via WordPress hooks, MutationObserver en AJAX-onderschepping
- Verbeterd: Instellingenbeschrijvingen bevatten nu dashboard-URL's voor API keys
Version: 1.2.2 - Uitgebracht op 2026-01-24
- Opgelost: Captcha werd niet weergegeven op Ultimate Multisite Login Form Element (mismatch in formulier-filternaam)
- Opgelost: Cap-widget-HTML werd verwijderd door wp_kses()-sanitization
- Opgelost: JavaScript-selectors vonden geen formulieren met schuine strepen in element-ID's
- Toegevoegd: Filter hook
wu_kses_allowed_htmlvoor classaddons om toegestane HTML-tags uit te breiden - Verwijderd: Dode-code JavaScript-bestanden vervangen door provider-specifieke scripts
Version: 1.2.1 - Uitgebracht op 2026-01-23
- Opgelost: Cap Captcha-tokenvalidatie mislukte in multisite-omgevingen (gebruikt nu netwerkbrede transients)
- Opgelost: Captcha wordt nu consistent gerenderd voor alle gebruikers, ongeacht inlogstatus
- Opgelost: Mismatch tussen captcha-rendering en validatie die checkout-fouten veroorzaakte
Version: 1.2.0 - Uitgebracht op 2026-01-21
- Nieuw: Cap Captcha - zelfgehoste proof-of-work-captcha, standaard ingeschakeld bij activering
- Nieuw: Zero-configuration bescherming - activeer de addon en je bent direct beschermd
- Nieuw: Polymorfe captcha-providerarchitectuur voor eenvoudige uitbreidbaarheid
- Nieuw: WooCommerce Store API checkout-bescherming tegen card-testing-aanvallen
- Nieuw: Statistiekentracking-dashboard met challenges, verificaties en geblokkeerde aanvallen
- Nieuw: Voorinstellingen voor beveiligingsniveau (Snel, Medium, Max) voor Cap Captcha-moeilijkheid
- Nieuw: Abstracte basisklassen voor reCAPTCHA- en hCaptcha-providers
- Verbeterd: Codebase gerefactord naar modulaire providerklassen
- Verbeterd: Betere scheiding van verantwoordelijkheden met speciale manager class
- Fixed: Security improvements for $_SERVER variable sanitization
- Opgelost: PHPUnit-testconfiguratie voor WordPress-naamgevingsconventies
Version: 1.0.1 - Uitgebracht op 2025-09-28
- Prefix hernoemd naar ultimate-multisite; text domain bijgewerkt; versieverhoging.