{
    "id": 6937,
    "date": "2026-11-10T10:34:00",
    "date_gmt": "2026-11-10T09:34:00",
    "guid": {
        "rendered": "https:\/\/wpmastertoolkit.com\/module\/captcha-on-login-form\/"
    },
    "modified": "2026-11-10T11:23:26",
    "modified_gmt": "2026-11-10T10:23:26",
    "slug": "captcha-on-login-form",
    "status": "publish",
    "type": "module",
    "link": "https:\/\/wpmastertoolkit.com\/fr\/module\/captcha-on-login-form\/",
    "title": {
        "rendered": "Captcha on login form"
    },
    "content": {
        "rendered": "<h1 class=\"wp-block-heading\">Module Captcha on login form : une question de calcul locale contre les robots<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Les formulaires de connexion, de mot de passe perdu et d\u2019inscription de WordPress sont des cibles privil\u00e9gi\u00e9es des robots. Le module <strong>Captcha on login form<\/strong> de WPMasterToolKit ajoute \u00e0 ces trois formulaires natifs une simple question d\u2019addition (\u00ab What is 3 + 2? \u00bb), g\u00e9n\u00e9r\u00e9e et v\u00e9rifi\u00e9e sur votre serveur, sans service tiers. Le module est gratuit ; le mode adaptatif est r\u00e9serv\u00e9 \u00e0 la version Pro.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"450\" height=\"540\" src=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-login-form.webp\" alt=\"Captcha on login form : question arithm\u00e9tique sur le formulaire de connexion WordPress\" class=\"wp-image-6949\" srcset=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-login-form.webp 450w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-login-form-250x300.webp 250w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-login-form-10x12.webp 10w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Quel plugin ce module peut-il remplacer ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il remplace les extensions de captcha math\u00e9matique comme <strong>Really Simple CAPTCHA<\/strong> ou <strong>Math Captcha<\/strong> sur la page de connexion de WordPress. Ce n\u2019est pas un \u00e9quivalent de reCAPTCHA, hCaptcha ou Turnstile : il ne fait pas d\u2019analyse comportementale et ne prot\u00e8ge que les formulaires natifs de WordPress (pas ceux de WooCommerce ni des constructeurs de formulaires). Il ajoute une friction simple qui compl\u00e8te, sans la remplacer, une limitation des tentatives de connexion comme notre module Limit Login Attempts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fonctionnalit\u00e9s principales<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Trois formulaires prot\u00e9g\u00e9s<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Login form :<\/strong> le formulaire de connexion (identifiant et mot de passe).<\/li>\n\n\n\n<li><strong>Lost-password form :<\/strong> la demande d\u2019e-mail de r\u00e9initialisation du mot de passe.<\/li>\n\n\n\n<li><strong>Registration form :<\/strong> le formulaire d\u2019inscription natif, si les inscriptions sont ouvertes sur votre site.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque formulaire s\u2019active s\u00e9par\u00e9ment. Le lien \u00ab New question \u00bb propose un autre calcul, et le captcha fonctionne aussi sans JavaScript.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deux modes de protection<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Always require :<\/strong> la question s\u2019affiche \u00e0 chaque fois sur les formulaires prot\u00e9g\u00e9s.<\/li>\n\n\n\n<li><strong>Adaptive (Pro) :<\/strong> la question n\u2019appara\u00eet que lorsque l\u2019activit\u00e9 r\u00e9cente semble suspecte. Les visiteurs l\u00e9gitimes se connectent sans calcul, les tentatives r\u00e9p\u00e9t\u00e9es tombent sur la question.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">R\u00e9glages du mode adaptatif (Pro)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le mode adaptatif compte les \u00e9checs et les envois de formulaire sur une courte p\u00e9riode, s\u00e9par\u00e9ment pour chaque navigateur et chaque adresse IP. D\u00e8s qu\u2019un seuil est atteint, la question devient obligatoire pendant une dur\u00e9e d\u00e9finie. Tous les seuils sont r\u00e9glables :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Activity counting period :<\/strong> dur\u00e9e de la p\u00e9riode de comptage (5 minutes par d\u00e9faut).<\/li>\n\n\n\n<li><strong>Require questions for :<\/strong> dur\u00e9e pendant laquelle la question reste obligatoire apr\u00e8s une activit\u00e9 suspecte (15 minutes par d\u00e9faut).<\/li>\n\n\n\n<li><strong>Failed logins from one browser \/ from one IP address :<\/strong> nombre d\u2019\u00e9checs de connexion tol\u00e9r\u00e9s (3 par navigateur et 5 par adresse IP par d\u00e9faut).<\/li>\n\n\n\n<li><strong>Request limits :<\/strong> nombre d\u2019envois du formulaire de connexion (10), de demandes de r\u00e9initialisation (3), d\u2019inscriptions (3) et de demandes de code de double authentification (3).<\/li>\n\n\n\n<li><strong>Form timing :<\/strong> un formulaire envoy\u00e9 trop vite (moins de 1 500 ms par d\u00e9faut) est jug\u00e9 suspect et d\u00e9clenche la question plus t\u00f4t.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1352\" height=\"630\" src=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-adaptive-settings.webp\" alt=\"Captcha on login form Pro : r\u00e9glages du mode adaptatif (p\u00e9riodes, \u00e9checs de connexion)\" class=\"wp-image-6950\" srcset=\"https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-adaptive-settings.webp 1352w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-adaptive-settings-300x140.webp 300w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-adaptive-settings-1024x477.webp 1024w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-adaptive-settings-768x358.webp 768w, https:\/\/wpmastertoolkit.com\/wp-content\/uploads\/2026\/11\/wpmtk-captcha-adaptive-settings-18x8.webp 18w\" sizes=\"(max-width: 1352px) 100vw, 1352px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Comment utiliser ce module ?<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Activez <strong>Captcha on login form<\/strong> dans WPMasterToolKit, puis ouvrez <strong>WPMasterToolkit &gt; Captcha on login form<\/strong>.<\/li>\n\n\n\n<li>Choisissez le mode \u00ab Always require \u00bb ou, en Pro, \u00ab Adaptive \u00bb.<\/li>\n\n\n\n<li>Cochez les formulaires \u00e0 prot\u00e9ger.<\/li>\n\n\n\n<li>En mode adaptatif, ajustez si besoin les p\u00e9riodes et les seuils, puis cliquez sur \u00ab Save \u00bb.<\/li>\n\n\n\n<li>Ouvrez votre page de connexion dans une fen\u00eatre priv\u00e9e pour v\u00e9rifier l\u2019affichage de la question.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Nos choix techniques<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>100 % local :<\/strong> aucun appel \u00e0 un service externe, donc aucune donn\u00e9e de vos visiteurs transmise \u00e0 un tiers.<\/li>\n\n\n\n<li><strong>Des questions \u00e0 usage unique :<\/strong> chaque question est li\u00e9e au navigateur par un cookie technique, expire au bout de 10 minutes et ne peut \u00eatre tent\u00e9e qu\u2019une fois. Seule une empreinte (HMAC) est stock\u00e9e, dans une table d\u00e9di\u00e9e nettoy\u00e9e toutes les heures par le cron.<\/li>\n\n\n\n<li><strong>Des limites anti-abus int\u00e9gr\u00e9es :<\/strong> le nombre de questions g\u00e9n\u00e9r\u00e9es, de r\u00e9ponses et d\u2019erreurs est plafonn\u00e9 par adresse IP sur 5 minutes. Les filtres <code>wpmastertoolkit_captcha_issue_limit<\/code>, <code>wpmastertoolkit_captcha_validate_limit<\/code>, <code>wpmastertoolkit_captcha_failure_limit<\/code>, <code>wpmastertoolkit_captcha_activity_limit<\/code> et <code>wpmastertoolkit_captcha_cancel_limit<\/code> permettent d\u2019ajuster ces plafonds.<\/li>\n\n\n\n<li><strong>Des messages d\u2019erreur g\u00e9n\u00e9riques,<\/strong> qui ne r\u00e9v\u00e8lent jamais si un compte existe.<\/li>\n\n\n\n<li><strong>Accessibilit\u00e9 :<\/strong> champ \u00e9tiquet\u00e9, clavier num\u00e9rique sur mobile, messages annonc\u00e9s aux lecteurs d\u2019\u00e9cran.<\/li>\n\n\n\n<li><strong>Compatible avec les autres modules WPMasterToolKit :<\/strong> une mauvaise r\u00e9ponse au captcha n\u2019est pas compt\u00e9e comme un \u00e9chec par Limit Login Attempts, la double authentification (Pro) v\u00e9rifie le captcha avant d\u2019envoyer un code par e-mail, et le captcha fonctionne avec Move Login URL et Custom Login Design.<\/li>\n\n\n\n<li><strong>Les acc\u00e8s par API ne sont pas touch\u00e9s :<\/strong> mots de passe d\u2019application, XML-RPC et API REST ne passent pas par les formulaires prot\u00e9g\u00e9s.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Bon \u00e0 savoir<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Derri\u00e8re un proxy inverse ou un CDN, configurez votre serveur pour transmettre la vraie adresse IP des visiteurs ; sinon, ils partagent tous la m\u00eame IP, et donc les m\u00eames limites.<\/li>\n\n\n\n<li>Excluez la page de connexion et les requ\u00eates AJAX de votre cache de page.<\/li>\n\n\n\n<li>Gardez une limitation des tentatives de connexion active : le calcul est un frein pour les robots simples, pas une v\u00e9rification infaillible.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Captcha on login form prot\u00e8ge les formulaires natifs de WordPress sans d\u00e9pendre d\u2019un service externe ni pister vos visiteurs. Le mode \u00ab Always require \u00bb est disponible gratuitement ; le mode adaptatif de la version Pro ne d\u00e9range vos utilisateurs que lorsque c\u2019est n\u00e9cessaire.<\/p>",
        "protected": false
    },
    "excerpt": {
        "rendered": "<p>Le module Captcha on login form de WPMasterToolKit ajoute une question d\u2019addition, g\u00e9n\u00e9r\u00e9e localement sans service tiers, aux formulaires natifs de connexion, de mot de passe perdu et d\u2019inscription de WordPress. En version Pro, le mode adaptatif n\u2019affiche la question qu\u2019en cas d\u2019activit\u00e9 suspecte, avec des seuils r\u00e9glables.<\/p>",
        "protected": false
    },
    "featured_media": 0,
    "parent": 0,
    "template": "",
    "meta": {
        "_acf_changed": false,
        "_surecart_dashboard_logo_width": "180px",
        "_surecart_dashboard_show_logo": true,
        "_surecart_dashboard_navigation_orders": true,
        "_surecart_dashboard_navigation_invoices": true,
        "_surecart_dashboard_navigation_subscriptions": true,
        "_surecart_dashboard_navigation_downloads": true,
        "_surecart_dashboard_navigation_saved": true,
        "_surecart_dashboard_navigation_billing": true,
        "_surecart_dashboard_navigation_account": true
    },
    "wpmtk_module_category": [],
    "class_list": [
        "post-6937",
        "module",
        "type-module",
        "status-publish",
        "hentry"
    ],
    "acf": [],
    "_links": {
        "self": [
            {
                "href": "https:\/\/wpmastertoolkit.com\/fr\/wp-json\/wp\/v2\/module\/6937",
                "targetHints": {
                    "allow": [
                        "GET"
                    ]
                }
            }
        ],
        "collection": [
            {
                "href": "https:\/\/wpmastertoolkit.com\/fr\/wp-json\/wp\/v2\/module"
            }
        ],
        "about": [
            {
                "href": "https:\/\/wpmastertoolkit.com\/fr\/wp-json\/wp\/v2\/types\/module"
            }
        ],
        "wp:attachment": [
            {
                "href": "https:\/\/wpmastertoolkit.com\/fr\/wp-json\/wp\/v2\/media?parent=6937"
            }
        ],
        "wp:term": [
            {
                "taxonomy": "wpmtk_module_category",
                "embeddable": true,
                "href": "https:\/\/wpmastertoolkit.com\/fr\/wp-json\/wp\/v2\/wpmtk_module_category?post=6937"
            }
        ],
        "curies": [
            {
                "name": "wp",
                "href": "https:\/\/api.w.org\/{rel}",
                "templated": true
            }
        ]
    }
}