Anti spam et anti robot : securisation de formulaire sans captcha

Soyez le premier à donner votre avis sur cette source.

Snippet vu 54 077 fois - Téléchargée 19 fois


Contenu du snippet

Ce code source permet de sécuriser un formulaire (email, inscription, etc...) sans utiliser d'image de confirmation visuel (de type captcha).
Ce code permet d'empêcher les robots spammeurs de valider un formulaire.

A savoir qu'un captcha est lourd (car parfois illisible pr l'homme, et plus simple pr la machine), qu'en plus il est possible aujourd'hui de lire des captcha via logiciel.

Ma méthode filtrera la majorité des robots, celle ci peut être contournée, mais cela demande au spammeur d'étudier votre site pr contourné la protection, ce qui n'arrivera presque jamais.

Théorie :
Vous placez sur votre formulaire en bas de celui-ci une case à cocher du style "Je certifie etre un être humain".

La suite dans la partie code source...

Source / Exemple :


CONTENU de 'mapage.php'

<?php
// Récuperation des valeurs en GET ou en POST
$try=(isset($_GET['try'])?$_GET['try']:(isset($_POST['try'])?$_POST['try']:''));
$nobotv=(isset($_GET['nobotv'])?$_GET['nobotv']:(isset($_POST['nobotv'])?$_POST['nobotv']:''));
$nobotc=(isset($_GET['nobotc'])?$_GET['nobotc']:(isset($_POST['nobotc'])?$_POST['nobotc']:''));
$nobots=(isset($_GET['nobots'])?$_GET['nobots']:(isset($_POST['nobots'])?$_POST['nobots']:''));

// Variable
$nobot = time().'_'.rand(50000, 60000);

if($try=='send')
{
  // Ici Le visiteur soumissione le formulaire  
	if(($nobotc!=md5($nobotv)) or ($nobotv=='') or ($nobots!='')) 
	{ 
	  echo "\n<br />  <b>Anti-Spam</b> : Vous n'avez pas cocher la case !"; 
	  // ICI on réafiche votre formulaire, car le test a echoué
	  // On réaffiche le formulaire
	  include 'mon_formulaire.php';	
	}
	else
	{
	  // Le test est bon... On continue
          // Envoi du mail, insertion ds MySQL, ou ce que vs voulez...
	}
}
else
{
  // Ici on affiche le formulaire, c'est l'affichage par défaut
  include 'mon_formulaire.php';	
}
?>

CONTENU DE 'mon_formulaire.php'

<form action="mapage.php" method="POST">
<input type="hidden" name="try" value="send">
<input type="hidden" name="nobotv" value="<?php echo $nobot; ?>">

<!-- ICI tout ce que vous voulez dans votre formulaire HTML -->

<!-- On Rajoute cette petite case à cocher en bas du formulaire -->

<h3>Anti-Spam :</h3>
<input type="checkbox" name="nobotc" value="<?php echo md5($nobot); ?>" />Je confirme que je suis un être humain, et pas un robot spammeur.
<div style="position: absolute; visibility: hidden; left: -5000; top : -5000">
<br><input type="checkbox" name="nobots" value="<?php echo time(); ?>" />I'm a Stupid Spam-Robot
</div>

</form>

Conclusion :


L'explication final :
Lors qu'un être humain passera sur votre formulaire celui ci cochera la case "je suis un être humain", un stupide robot lui cochera toutes les cases, ou aucune des cases.
A savoir qu'un être humain ne verra pas la case "I'am a Stupid Spam Robot". (le champ est masqué)
Résultat : un robot ne parvient pas à valider se formulaire !

C'est très simple, très bête, mais très efficasse, mais fallais t-il y penser !?
Pour ne pas qu'un robot puisse retenir les réponses à cocher ou à ne pas cocher, j'ai integrer l'heure dans le POST, et une fonction MD5.

Il vous est aussi possible de vérifier l'heure...
Il suffit pr cela de comparer $nobotc et time()

Après installation sur des Form2mail, je n'ai plus de robots ;-)

Voir démo ici : http//xxxxxxxxxxxxx.com/?pg=mailme

- - - - - - - - - - - - - - - - - - - - - - - -

Afin que vous puissiez avoir une démo de l?efficacité de mon système, j?avais laissé l?adresse de mon site, avec la page de mon formulaire de mail (sendmail) destiné à mes clients pour me contacter.
Ce système anti-spam monté sur mon Sendmail empêche un robot de valider le formulaire.
En plus de cela, mon sendmail vérifie d?autres champs « nom, message, votre adresse, et sujet » et n?envoi pas de mail si ceux-ci n?ont pas été définit.

Il était donc possible aux visiteurs de codes-sources.com, d?aller sur mon sendmail, de cliquer sur le bouton « valider », sans cocher la case « anti-spam » (de voir apparaître le message d?erreur comme quoi il est nécessaire de cocher la case), ou de la cocher, et de voir apparaître en erreur que les champs « nom, message, adresse, et sujet » n?ont pas été définit.

Résultat : On a testé le système, et sans m?envoyer de mail.
Amplement suffisant pour voir que mon système ANTI-SPAM marche !

Malgré ma demande express demandé aux visiteurs de codes-sources.com, de ne pas m?envoyer de message juste pr écrire « test », j?en réceptionne encore plrs par jour !

Je supprime donc l?adresse de démo de mon système, à vous de bien lire le code et d?en comprendre le fonctionnement, le principe, etc?

Dommage pour ceux « qui n?ont rien fait » ils payent pour les idiots (qui malgré avoir lu l?ont fait quand même) et les dyslexiques.


SI JE METS EN PLACE UN SYSTEME ANTI-SPAM (anti-robot) c?est pour me faire SPAMMER par des Humains ! ^_^

A voir également

Ajouter un commentaire

Commentaires

psykocrash
Messages postés
244
Date d'inscription
vendredi 14 juin 2002
Statut
Membre
Dernière intervention
17 mars 2009
-
J'ai déjà vu il y a quelques mois cette protection sur un forum phpbb.

Cette protection n'est malheureusement plus efficace dès lors que le robot est paramétré pour ton site spécifiquement.
Kdecherf
Messages postés
96
Date d'inscription
mardi 9 janvier 2007
Statut
Membre
Dernière intervention
18 avril 2007
-
Bonsoir, certes c'est une bonne idée mais qui peut être en effet détournée. La solution serait que ça soit un champ avec un nom qui se modifie à chaque formulaire ainsi le robot ne peut pas stabiliser les cases à cocher (et puis après on peut s'amuser à créer ses champs avec des noms à coucher dehors, chacun sa route). ;-)
psykocrash
Messages postés
244
Date d'inscription
vendredi 14 juin 2002
Statut
Membre
Dernière intervention
17 mars 2009
-
Se contenter de changer le nom ne servirait à rien. Ce qu'il faudrait, c'est changer la question et la réponse attendue. Ce serait déjà plus dure à contourner parce qu'il faudrait alors que le robot ait en mémoire la liste des questions/réponses.
Kdecherf
Messages postés
96
Date d'inscription
mardi 9 janvier 2007
Statut
Membre
Dernière intervention
18 avril 2007
-
Ce qui est tout à fait faisable aussi ...
Tous les systèmes ont des limites en fait. Ce qui pourrait être fait aussi c'est un anti-flood en limitant les délais entre deux emails pour une même adresse ip.
psykocrash
Messages postés
244
Date d'inscription
vendredi 14 juin 2002
Statut
Membre
Dernière intervention
17 mars 2009
-
Ce qui serait vraiment intéressant du point de vue de la sécurité anti flood, ce serait d'avoir une base de données commune à un grand nombre de sites du même genre (phpbb par exemple) qui recenserait des stats avec ip sur les visiteurs pour repérer ceux qui flood, éventuellement les bloquer ou leur imposer un délais d'attente, et pourquoi pas (mais ce serait plus compliqué à réaliser) ajouter à cela un système expert qui étudierait le fonctionnement de ces robots pour les détecter plus vite.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.