Joomla 4 - re-Captcha a disparu

Fermé
jmgroud Messages postés 39 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 10 mars 2023 - 6 mars 2023 à 10:09
jmgroud Messages postés 39 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 10 mars 2023 - 10 mars 2023 à 05:20

Bonjour

Je travaille depuis "quelque temps" sur la migration d'un site vers Joomla 4. Pas toujours facile mais bon ! J'avance petit à petit.

J'ai eu l'occasion de tester différents Captcha pour ne plus prendre celui proposé par Joomla par défaut (le re-Captcha de Google). Par la suite, après ces tests et d'autres développements annexes, je me suis aperçu que le captcha par défaut avait disparu, pourtant :

Configuration globale / Site / Captcha par défaut : "CAPTCHA - reCAPTCHA"

Utilisateurs / Gestion / Paramètres / Utilisateurs : Paramètres généraux (CAPTCHA - reCAPTCHA)

Ce qui est bizarre, c'est que le "reCAPTCHA" s'affiche pour la création d'un utilisateur ainsi que pour l'envoi d'un formulaire de contact.

Il ne s'affiche plus uniquement lors du processus de connexion d'un utilisateur et la connexion reste possible comme si le captcha n'était pas actif à ce moment-là.
Le captcha  s'affichait il y a quelques jours mais j'avoue qu'il y a eu tellement de modifications que je ne sais pas à partir de quand ce problème est arrivé.

Comment peut-on expliquer cette disparition uniquement sur le module de connexion ?

J'ai installé d'autres captcha pour vérifier si c'était associé uniquement au "reCAPTCHA", et j'ai le même problème.
J'imagine donc un soucis de paramétrage Joomla ou de template (j'utilise une base "Kraken" avec Gantry bien remis à jour pour Joomla 4).

Des idées ?
Merci d'avance pour vos retours.
Jean-Marie


5 réponses

Bonjour,

En comparant les formulaires pour l'inscription et la connexion dans les sources de Joomla, il semble qu'il n'y a jamais eu de captcha sur le formulaire de connexion :
https://github.com/joomla/joomla-cms/blob/4.2-dev/components/com_users/forms/registration.xml
https://github.com/joomla/joomla-cms/blob/4.2-dev/components/com_users/forms/login.xml

Puisque le capctha est disponible sur le formulaire d'inscription, avec la vérification des comptes à l'inscription, il semble que le captcha ne soit pas nécessaire sur le formulaire de connexion. A voir dans le JED (https://extensions.joomla.org/) si des extensions permettent d'afficher le captcha si vraiment tu souhaites l'avoir lors de la connexion.

1
jmgroud Messages postés 39 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 10 mars 2023 12
Modifié le 8 mars 2023 à 13:08

Bonjour Pitet

Vous avez en effet raison sur le fait que Joomla, de base, n'affiche par le captcha lors du processus de connexion (j'étais dans l'erreur), mais uniquement lors de la création d'un nouveau compte (ou autres...).

Il faut donc installer une extension tierce comme "AuthCaptcha" pour voir apparaître le captcha au moment de la connexion.

A ce jour, les robots des pirates attaquent régulièrement nos sites et nous devons (c'est en tout cas mon avis) mettre en place des systèmes qui empêchent des personnes non habilités à se connecter...

Les utilisateurs qui créés leur compte ne sont pas toujours (je dirai même rarement) au courant des failles de sécurité au niveau même de leur propre matériel et dans ce cas, un virus peut récupérer les identifiants et mots de passe de connexion et se connecter à la place d'une véritable personne.

Le captcha n'est pas "La solution miracle" je sais, mais une barrière supplémentaires pour les robots. Si l'utilisateur donne ses identifiants (décision personnelle ou par virus) à d'autres, il est difficile, voir impossible de tout protéger. J'utilise donc un Captcha de connexion ainsi qu'une extension complémentaire de sécurité ("Admin Tools" en ce qui me concerne, je sais qu'il y en a d'autres...).

J'ai appris qu'il y avait également d'autres systèmes du côté serveur, par exemple "Cloudflare "... Aujourd'hui, je ne sais pas exactement comment tout ceci fonctionne ni comment mettre en place ce système (mon hébergeur ? une autre extension Joomla ?) mais je vais étudier aussi cette voie.

Je vais donc installer "AuthCaptcha" et voir si ceci règle le sujet propre de ce post (disparition du captcha au moment du processus de connexion) et mettrai ce sujet "REGLE" si c'est une solution.


1

En effet je constate la même erreur avec AuthCaptcha et jGraphic activé.
Il s'agit d'un problème de code PHP, l'extension jGraphic semble ne pas avoir prévu que son captcha puisse être utilisé par un autre plugin.

Avant le chargement de la page, le plugin AuthCaptcha déclenche l'événement onDisplay de l'API Captcha de Joomla pour récupérer le code html du captcha configuré. L'événement est déclenché sans paramètre.
Pas d'erreur avec recaptcha puisque des paramètres par défaut sont définis pour la fonction onDisplay(), contrairement au plugin jGraphic qui attends 3 paramètres $name, $id et $class sans valeurs par défaut (d'où l'erreur "Too few arguments to function onDisplay(), exactly 3 expected").

On peut comparer la déclaration des deux fonctions dans les fichiers du dossier plugins :

plugins/captcha/recaptcha/recaptcha.php

    public function onDisplay($name = null, $id = 'dynamic_recaptcha_1', $class = '')

plugins/captcha/jgraphiccaptchaprotection/jgraphiccaptchaprotection.php

    public function onDisplay($name, $id, $class) {


Il n'est pas recommandé de modifier le code source des extensions ou plugins car on perd les modifications en cas de mise à jour. Néanmoins le site de l'éditeur de jGraphic indique que la dernière maj date de février 2021.

On peut corriger l'erreur en ajoutant des valeurs par défaut aux paramètres de la fonction onDisplay dans le fichier jgraphiccaptchaprotection.php à partir de la ligne 22 :

    public function onDisplay($name = 'jform[captcha]', $id = 'jform_captcha', $class = null) {
        
        return $this->PrintCells().'<input type="hidden" value="none" name="'.$name.'" id="'.$id.'" >';
    }
1
jmgroud Messages postés 39 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 10 mars 2023 12
8 mars 2023 à 20:31

Je reviens vers vous après mes tests avec l'extension "AuthCaptcha".

L'installation s'installe correctement et 'reCaptcha' fonctionne à la fois dans les formulaires prévus par Joomla et en plus dans les formulaires de connexion.
C'est très bien, mais malheureusement j'ai un message d'erreur lorsque j'active cette extension avec une autre extension que 'reCaptcha', par exemple 'keyCaptcha ou 'jGraphic Captcha Protection'). Tous ces Captcha fonctionnent dans les formulaires suivant la configuration de Joomla avec 'AuthCaptcha' désactivé.

Exemples avec 'jGraphic Captcha Protection'

Si je garde les 2 plugins captcha activés (reCaptcha + 'jGraphic Captcha Protection' avec 'reCaptcha' choisi dans les paramètres de Joomla.
0 Too few arguments to function PlgCaptchaJgraphiccaptchaprotection: onDisplay(), 0 passed in /homepages/27/d203673211/htdocs/felicite19-Joomla4/libraries/src/Plugin/CMSPlugin.php on line 279 and exactly 3 expected

Si je désactive le reCaptcha et que je choisis 'jGraphic Captcha Protection' en tant que Captcha par défaut dans les paramètres de Joomla, j'ai la même erreur.

Si j'active 'jGraphic Captcha Protection' et 'reCaptcha' avec 'reCaptcha' comme captcha par défaut

- Message d'erreur
- Le module de connexion ne fait apparaître aucun captcha
- Tous les autres formulaires font apparaître 'reCaptcha' comme prévu.

Si je désactive 'jGraphic Captcha Protection' et garde 'reCaptcha' activé avec 'reCaptcha' comme captcha par défaut

- L'erreur disparaît
- 'reCaptcha' réapparaît dans le module de connexion (normal car 'AuthCaptcha' est toujours activé)
- Les autres formulaires continuent de fonctionner comme prévu
DANS CETTE CONFIGURATION TOUT FONCTIONNE

Si je désactive 'jGraphic Captcha Protection' et garde 'reCaptcha' activé avec 'reCaptcha' comme captcha par défaut

Si j'arrive à bien comprendre ce fonctionnement, il y a un lien direct avec le module qui en fait, arrive à gérer le 'reCaptcha' mais les autres plugins...
Bizarre non ?


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmgroud Messages postés 39 Date d'inscription mardi 23 mai 2006 Statut Membre Dernière intervention 10 mars 2023 12
10 mars 2023 à 05:20

Bonjour Pitet

Et bien je ne peux que te remercier du temps que tu as pris pour étudier ce "petit problème".

Le plugin "jGraphics" semble avoir été arrêté car aucune mise à jour depuis plus de 2 ans (ce n'est que supposition bien entendu). Je me trompe peut-être...

Je ne sais plus exactement quels étaient les autres plugins et les autres erreurs mais d'autres plugins avaient générés d'autres messages d'erreurs...

Je recherche un autre plugin pour éviter d'utiliser un produit "Google" (oui, je sais ! Ce n'est qu'une impression personnelle mais je ne rentre pas dans les détails ;-) )

Je vais tester la solution de modification du source php comme tu l'as indiqué ne serait-ce que pour tester ce plugin et je vais essayer d'en trouver d'autres (gratuits si possible...).

Merci encore ! :-)

.


0