Journal des modifications de Captcha
Version : 1.5.0 - Publiée le 2026-05-22
- Nouveau : limiteur de débit avec arrêt strict — compte chaque GET et POST sur les surfaces protégées par captcha (wp-login / register / lost-password / comments, WooCommerce my-account / checkout / pay-for-order, Ultimate Multisite checkout / inline-login) et répond avec HTTP 429, un
Retry-Afterheader, et une mise en attente tarpit aléatoire (1–5 s, plafonnée strictement à 15 s). - Nouveau : paramètres
cap_rate_limit_tarpit_min/cap_rate_limit_tarpit_maxpour ajuster la fenêtre tarpit. - Nouveau : filtre
wu_cap_rate_limit_whitelist_ippour exempter les plages d’IP de confiance. - Nouveau : action
wu_cap_rate_limit_will_blockqui se déclenche immédiatement avant l’envoi de la réponse d’arrêt strict. - Nouveau : détection de l’IP client résistante à l’usurpation.
Captcha_Core::get_client_ip()(la source de vérité pour les clés de compartiment de limite de débit, leremoteipcaptcha siteverify, et les hachages d’IP des statistiques) applique désormais un modèle de confiance strict : REMOTE_ADDR est la base,CF-Connecting-IPn’est honoré que lorsque le pair immédiat se trouve dans une plage d’IP Cloudflare actuelle, etX-Forwarded-Forn’est honoré que lorsque le pair immédiat figure dans la liste de proxies de confiance configurée par l’admin, avec un parcours de droite à gauche qui ignore les sauts de confiance/CF avant de s’arrêter sur l’IP du visiteur. - Nouveau : paramètre
cap_trust_cloudflare_headers(désactivé par défaut) — activez la confiance enversCF-Connecting-IPlorsque vous êtes derrière Cloudflare. Le plugin embarque un instantané CIDR Cloudflare et l’actualise chaque semaine via wp-cron avec un repli embarqué si l’actualisation échoue. - Nouveau : paramètre
cap_trusted_proxies— zone de texte de CIDR ou d’IP brutes (une par ligne, commentaires#autorisés) listant vos propres proxies / répartiteurs de charge de première ligne. Sans cela,X-Forwarded-Forest ignoré même lorsque le limiteur de débit est activé. - Nouveau : auto-détection à la première activation de la posture probable Cloudflare / proxy avec une notification admin « Appliquer les paramètres détectés » en un clic. Le plugin n’écrase jamais vos valeurs enregistrées ; si le trafic ultérieur suggère que votre config ne correspond plus à la réalité (par ex. Cloudflare a modifié les plages CIDR et votre CIDR de proxy est désormais obsolète), une notification de non-correspondance non révocable affiche la mise à jour recommandée.
- Corrigé : le mode invisible ne rétrograde plus silencieusement
cap_security_levelvers FAST — le niveau configuré par l’admin est honoré. Un nouveau filtrewu_cap_server_security_levelest disponible pour les sites qui veulent une logique sur mesure. - Corrigé : le compteur de statistiques
rate_limits_triggereds’incrémente désormais à chaque blocage, pas seulement sur le rare chemin de garde-fou après succès. - Corrigé :
Captcha_Core::get_client_ip()est désormais l’unique source de vérité pour l’attribution d’IP visiteur à travers le limiteur de débit, les fournisseurs de captcha (reCAPTCHA + hCaptchasiteverify) et les statistiques — fermant un vecteur d’usurpation où des requêtes directes vers le serveur d’origine portant unCF-Connecting-IPheader falsifié auraient été regroupées selon l’IP usurpée au lieu du pair réel. - Corrigé : la porte de limite de débit du checkout classique WooCommerce se déclenche désormais sur
template_redirect(priorité 1) au lieu dewoocommerce_before_checkout_form. Le hook au niveau du formulaire ne se déclenche jamais lorsque le panier est vide, donc le trafic de flood qui n’ajoute jamais de produit contournait entièrement le limiteur. - Corrigé : la porte de limite de débit WooCommerce pay-for-order se déclenche désormais sur
template_redirectau lieu dewoocommerce_before_pay_action. Ce dernier ne se déclenche qu’après la réussite dewp_verify_nonce('woocommerce-pay'), ce qui signifie que les attaquants non authentifiés (le modèle de menace réel) ne déclenchaient jamais le limiteur. - Corrigé : la porte de limite de débit du checkout WooCommerce Store API (blocs) se déclenche désormais sur
rest_pre_dispatchau lieu dewoocommerce_store_api_checkout_update_order_from_request. Ce dernier ne se déclenche qu’après que Store API a validé le panier et les champs de facturation, donc les bots non authentifiés recevaient un 400 du validateur et ne déclenchaient jamais le limiteur. - Corrigé : la porte de limite de débit Ultimate Multisite inline-login se déclenche désormais sur
wu_ajax_nopriv_wu_inline_loginpriorité 1 (et son miroir pour utilisateurs connectés) au lieu dewu_before_inline_login. Ce dernier ne se déclenche qu’après la réussite decheck_ajax_referer('wu_checkout'), donc les bots non authentifiés sans nonce wu_checkout valide recevaient un 403 et ne déclenchaient jamais le limiteur. - Corrigé :
Rate_Limiter::enforce()applique désormais une garde une fois par requête, indexée parsurface|ip, de sorte que les hooks en amont qui se déclenchent deux fois par rendu (notammentwu_setup_checkoutdans Ultimate Multisite) ne divisent plus par deux le seuil effectif de limite de débit. - Corrigé : les portes de surface de limite de débit ne consultent plus
Captcha_Core::is_whitelisted()(filtrewu_captcha_whitelisted). Ce filtre signale « captcha déjà géré par une autre surface » et est orthogonal à la protection contre le flood — l’intégration WooCommerce s’y accrochait pour ignorer le captcha de connexion WordPress lorsqu’un nonce Woo était présent, ce qui débordait dans le comptage du débit et permettait aux POST Woo d’éviter le limiteur. Le filtre spécifique à la limite de débitwu_cap_rate_limit_whitelist_ipest le seul contournement qui s’applique désormais.
Version : 1.3.2 - Publiée le 2026-01-27
- Corrigé : le widget Cap ne s’affichait pas sur les formulaires de checkout utilisant Elementor ou d’autres constructeurs de pages
- Corrigé : l’élément personnalisé cap-widget était supprimé par l’assainissement wp_kses()
- Amélioré : utilisation de contenu appelable pour le champ captcha du checkout afin de contourner le filtrage HTML
- Amélioré : JavaScript simplifié avec repli pour les cas limites
Version : 1.3.1 - Publiée le 2026-01-26
- Corrigé : le mode invisible Cap Captcha ne se résolvait pas automatiquement sur les formulaires de checkout Ultimate Multisite dynamiques
- Amélioré : le script de checkout Cap utilise désormais MutationObserver pour détecter les widgets chargés dynamiquement
- Amélioré : ajout de l’interception du bouton de checkout pour attendre le token avant la soumission
Version : 1.3.0 - Publiée le 2026-01-27
- Nouveau : intégration du checkout WooCommerce Blocks avec interception des fetch Store API
- Nouveau : prise en charge du captcha invisible pour le checkout WooCommerce (hCaptcha invisible, reCAPTCHA v2 invisible, v3)
- Nouveau : page de réglages autonome pour une utilisation sans Ultimate Multisite
- Nouveau : Jetpack Autoloader pour la prévention des conflits de dépendances
- Corrigé : hCaptcha ne s’affichait pas sur le checkout dynamique Ultimate Multisite (contenu chargé via AJAX)
- Corrigé : le captcha ne se rafraîchissait/ne se réinitialisait pas lorsque des erreurs de validation de formulaire survenaient
- Corrigé : hCaptcha ne s’affichait pas sur la page de checkout WooCommerce
- Corrigé : erreur de classe reCAPTCHA introuvable (bibliothèque PHP google/recaptcha ajoutée)
- Amélioré : détection des erreurs via les hooks WordPress, MutationObserver et l’interception AJAX
- Amélioré : les descriptions des réglages incluent désormais les URLs du dashboard pour les clés API
Version : 1.2.2 - Publiée le 2026-01-24
- Corrigé : le captcha ne s’affichait pas sur l’élément de formulaire de connexion Ultimate Multisite (nom du filtre de formulaire incohérent)
- Corrigé : le HTML du widget Cap était supprimé par la sanitisation wp_kses()
- Corrigé : les sélecteurs JavaScript ne trouvaient pas les formulaires avec des barres obliques dans les IDs d’éléments
- Ajouté : hook de filtre
wu_kses_allowed_htmlpermettant aux classaddons d’étendre les balises HTML autorisées - Supprimé : fichiers JavaScript de code mort remplacés par des scripts spécifiques aux fournisseurs
Version : 1.2.1 - Publiée le 2026-01-23
- Corrigé : la validation du token Cap Captcha échouait dans les environnements multisite (utilise désormais des transients à l’échelle du réseau)
- Corrigé : le captcha s’affiche désormais de manière cohérente pour tous les utilisateurs, quel que soit leur statut de connexion
- Corrigé : incohérence entre l’affichage et la validation du captcha qui provoquait des échecs de checkout
Version : 1.2.0 - Publiée le 2026-01-21
- Nouveau : Cap Captcha - captcha auto-hébergé à preuve de travail, activé par défaut lors de l’activation
- Nouveau : protection sans configuration - activez l’addon et vous êtes immédiatement protégé
- Nouveau : architecture polymorphe de fournisseur de captcha pour une extensibilité facile
- Nouveau : protection du checkout WooCommerce Store API contre les attaques de test de cartes
- Nouveau : dashboard de suivi des statistiques affichant les défis, les vérifications et les attaques bloquées
- Nouveau : préréglages de niveau de sécurité (Rapide, Moyen, Max) pour la difficulté de Cap Captcha
- Nouveau : classes de base abstraites pour les fournisseurs reCAPTCHA et hCaptcha
- Amélioré : base de code refactorisée en classes de fournisseurs modulaires
- Amélioré : meilleure séparation des responsabilités avec une classe de gestionnaire dédiée
- Fixed: Security improvements for $_SERVER variable sanitization
- Corrigé : configuration des tests PHPUnit pour les conventions de nommage WordPress
Version : 1.0.1 - Publiée le 2025-09-28
- Renommer le préfixe en ultimate-multisite ; mettre à jour le domaine de texte ; incrémenter la version.