mise a jour captcha formulaire de contact

7 posts in this topic

Posted · Report post

Bonjour,

J'ai la version peel premium 7.1.0 et comme surement pas mal de monde je reçoit bcp de spam via le formulaire de contact. Le code captcha est surement plus a jour pour les robot et peut donc etre facilement cracké.

Sans installer forcement une nouvelle version de peel (car j'ai fait pas mal de changement ds le code(enfin une agence), peut-on simplement mettre a jour le captcha du formulaire de contact afin de réduire les spam ou les eradiquer?

En vous remerciant

 

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

Vous pouvez effectivement changer le captcha utilisé dans le formulaire, par exemple en utilisant reCAPTCHA. Cela nécessite un développement spécifique sur votre site.

La méthode la plus simple est d'utiliser la méthode du "pot de miel" que nous avons mis en place sur la version 9.3 de PEEL. Vous pouvez lire les topics https://forum.peel.fr/topic/16481-mail-frauduleux/ et https://forum.peel.fr/topic/15961-inscription-frauduleuse/ qui traitent du sujet.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour, je me suis dernièrement pencher sur le sujet car en effet j'ai aussi beaucoup d'inscription "spam" et beaucoup de mail de contact via le formulaire type "spam" le tout surement automatiquement.

Je suis en version 7.2.0 et je vais prochainement passer a la dernière version si j'arrive a passer toutes mes données entre ces versions.

Bref, je penser mettre une sécurité en plus ou faire des changement de celle-ci mais cela aura aussi un impacte sur les utilisateurs réel et il faut le dire, remplir les captcha c'est chiant.

Je me suis donc tourner sur le fait que le formulaire étant rempli automatiquement, cela doit prendre moins de 1 seconde donc j'ai simplement désactivé le bouton et apres x secondes le bouton est actif, cela devrai empêcher pas mal de spam a ce niveau (c'est fait depuis a peine 24h donc je ne peut pas encore le confirmer réellement mais il me semble que se soit beaucoup mieux).

La première chose que j'avais faite c'est de n'autoriser le formulaire contact uniquement aux client connecté donc inscrit, dans /www/utilisateurs/contact.php J'ai ajouter ceci apres $GLOBALS['DOC_TITLE'] = $GLOBALS['STR_CONTACT_US'];:

if (!est_identifie()) {
	$_SESSION['session_redirect_after_login'] = get_current_url(true);
	redirect_and_die($GLOBALS['wwwroot'] . '/membre.php');
}

Si vous voulez garder le formulaire pour tous alors ne pas faire cela.

Ensuite je me suis pencher sur les inscription et dans /www/modeles/mon_modele/smarty/user_register_form.tpl presque tout en bas avant {$js_password_control} j'ai mis:

<script language="JavaScript" type="text/javascript">
 {literal}
(function() {
  var id_sub = "sub"; // id du bouton submit à désactiver
  var str_fin = "Ouvrir un compte"; // texte du bouton une fois actif
  var pre = "Il reste "; // chaine à insérer avant le compte
  var post = " secondes avant de pouvoir ouvrir un compte..."; // chaine à insérer après le compte
  var sub;
  window.onload=function() {
    sub = document.getElementById(id_sub);
    rebours(10);
  };
  function rebours(n) {
    if(sub.disabled) {
      if(n == 0) {
        sub.value = str_fin;
        sub.disabled = false;
      } else  {
      sub.value = pre+n+post;
      }
      setTimeout(function() {
        rebours(n-1);
      },1000);
    }
  }
})();
 {/literal}
</script>

cela permettra d'activer le bouton apres 10 secondes, vous pouvez modifier cela en changeant rebours(10);
Mais il faut aussi mettre un ID au bouton et désactivé celui-ci d'origine donc on modifie la ligne du bouton:

<p class="center">{$token}<input class="btn btn-primary" type="submit" value="{$submit_text|str_form_value}" /></p>

A changer par:

<p class="center">{$token}<input id="sub" class="btn btn-primary" type="submit" value="{$submit_text|str_form_value}" disabled/></p>

on a dont mis un id="sub" et mis disabled pour qu'il soit désactivé.

Ensuite je me suis rendu compte que un robot deja inscrit avais reussi a remplir le formulaire contact, j'ai donc fait la meme chose sur la formulaire contact donc dans /www/modeles/mon_modele/smarty/contact_form.tpl presque tout en bas, au dessus de {if !$skip_introduction_text}</div>{/if} j'ai mis:

<script language="JavaScript" type="text/javascript">
 {literal}
(function() {
  var id_sub = "sub"; // id du bouton submit à désactiver
  var str_fin = "Envoyer"; // texte du bouton une fois actif
  var pre = "Il reste "; // chaine à insérer avant le compte
  var post = " secondes avant de pouvoir envoyer..."; // chaine à insérer après le compte
  var sub;
  window.onload=function() {
    sub = document.getElementById(id_sub);
    rebours(10);
  };
  function rebours(n) {
    if(sub.disabled) {
      if(n == 0) {
        sub.value = str_fin;
        sub.disabled = false;
      } else  {
      sub.value = pre+n+post;
      }
      setTimeout(function() {
        rebours(n-1);
      },1000);
    }
  }
})();
 {/literal}
</script>

et quelque lignes au dessus j'ai aussi ajouté un ID sur le bouton et mis disabled comme ceci:

<td>{$token}<div style="text-align:center; margin-top: 10px; margin-bottom: 10px;"><input id="sub" type="submit" class="btn btn-primary btn-lg" value="{$STR_SEND|str_form_value}" disabled/></div></td>

 

Je vais voir dans les prochains jours si ça fonctionne, je devrai etre rapidement fixé vu le nombre reçu chaque jours en temps normal.

Je sais pas si c'est optimisé mais ça fonctionne sur ma version 7.2.0 et on touche pratiquement pas au code d'origine.

Si ça peut vous aider et en aider d'autres c'est top ;)

 

Bonne journée.

Share this post


: post
Share on other sites

Posted · Report post

Je confirme que j'ai plus eu d'inscription ou de contact via formulaire par des robots depuis cette modification.
J'ai bien eu des inscription d'utilisateurs réel (oui j'ai quand même vérifier que on ne bloquer pas toutes les inscriptions)

Mais ça fait bizarre maintenant j'ai l'impression que je reçois plus les mail tellement c'est calme lol j'était dernièrement a environ 250 mails via le formulaire sur le mois donc presque une 10ene chaque jours...

Share this post


: post
Share on other sites

Posted · Report post

Merci bcp pour vos messages bien utiles. Je vais essayer cela de mon côté.

 

Share this post


: post
Share on other sites

Posted · Report post

De rien, depuis que j'ai mis cela donc en 15 jours j'ai eu 3 mails qui sont passé alors que logiquement sur 15 jours j'aurai eu en temps normal plus de 100 mails.

C'est pas infaillible mais ça réduit beaucoup.

Share this post


: post
Share on other sites

Posted · Report post

J'ai fais les modif sur le formulaire de contact, le bouton se valide bien au bout de 10 secondes mais après 48 de test je reçoit tjrs le meme nombre de spam... de mon côté j'ai pas la modif pour que uniquement les clients enregistré puisse remplir le formulaire. Je pense que les robots de spam attendent et valide tant que la page n'est pas rafraichie... c'est dommage je trouvais l'idée très bonne.

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

Twitter Advisto ecommerce

Facebook PEEL Shopping