NeoSting.net
Le petit journal d'un passionné de nouvelles technologies et pour le partage de la culture.

(QR Code) de cette page sur neosting.net

Partager...

# Un formulaire anti-spam sans captcha, ni artifice

C'est Spookev (auteur de peeklife et récemment de MonHmaF) qui a écrit tout bêtement ce petit bout de code, et vous allez voir que l'idée, est à la fois très bonne et vraiment simple à mettre en place. Ce qui est même étonnant, c'est que cette idée n'ait pas déjà été exploitée avant, en tout cas, à ma connaissance. Il est parti du principe que les bots (ces robots spammeurs) sont suffisamment assez bêtes pour vouloir remplir tous les champs dans un formulaire.

Il suffit donc de créer un champ texte supplémentaire, de le rendre invisible avec du CSS, et surtout, de le faire analyser, grâce au javascript, ou au PHP, avant l'envoi final. Si ce champ reste vide, on estime qu'on a pas à faire à un bot, et on valide définitivement l'envoi. Si, au contraire, ce champ texte contient quelque chose, l'envoi n'est alors pas pris en compte.

Logiquement, comme ce champ "spécial" est caché, il n'y a pas de raison pour qu'un véritable utilisateur le remplisse. Toutefois, pour ceux qui désactivent dans leur navigateur les feuilles de style (les aveugles, ou ceux qui ont besoin d'un maximum d'accessibilité), il faut indiquer que ce champ texte doit être laisser vide. Mais n'oublions pas que les robots sont toujours mieux programmés, et ils seraient capable d'analyser ce qui est écrit avant ou après le champ pour réagir en conséquence. Il faudrait donc éviter des mots comme "vide", ou "ne pas remplir". On pourrait placer, par exemple, quelque chose comme : "ici, il faut mettre le cerveau d'une blonde".

Voici donc le code à ajouter dans le formulaire.

#
# Le formulaire Type en HTML (par Spookev)
#
<form action="traitement.php" name="votreForm" method="post">
<input class="ccab" name="host" type="text" value=""/> <!--VOICI LE CHAMP CACHE-->
<input class="" name="champ1" type="text" value=""/><br />
<input class="" name="champ2" type="text" value=""/><br />
<input class="" name="cham3" type="text" value=""/><br />
<input type="button" value="Envoyer" onclick="javascript:verifForm('Bien envoyé');"/> <!--N'OUBLIEZ PAS LE onclick AVEC LA FONCTION verifForm() -->
</form>

Dans votre fichier CSS, ajoutez ceci, pour justement cacher ce champ "spécial"

.ccab { display: none; }

L'analyse par la méthode javascript

#
# Le script de détection en JavaScript (par Spookev)
#
<script type="text/javascript">
// Il serait préférable de mettre ce script dans un fichier JS //
function verifForm(okform)
{
    if(document.forms['votreForm'].elements['host'].value == '')
    { // On teste si 'host' est vide
        alert(okform);    // Il est vide, on ouvre une alerte (ou pas, dans ce cas, commenter cette ligne)
        document.forms['votreForm'].submit(); // On envoi le formulaire, tous les champs sont remplis et
    'host' est vide    
    }
    else
    {
        document.location='http://www.fuckspam.com/';
    // Si le champ 'host' est rempli, on redirige le robot vers un super site :D
    }
}
</script>

La "même" analyse mais en php, à choisir

#
# Complémentaire : La détection via PHP (par GeekArlier)
#
<?php
if(isset($_POST['host']) && empty($_POST['host'])) //Si "host" est vide
{
     //On continue le traitement de données
}
else //Sinon
{
    //Sachant qu'on a très probablement affaire à un bot, inutile de renvoyer un message d'erreur =)
    //Vous pouvez cependant en profiter pour blacklister l'ip du robot spammeur si nécessaire...
    //Ces données peuvent également servir pour des statistiques.
}
?>

Merci à ma source

D'après ces premiers retours d'analyses, il semble que les bots se soient pour le moment fait avoir à 100%. Si vous avez des remarques, n'hésitez pas à utiliser les commentaires.


Pourquoi les commentaires sont fermés ?

Articles pouvant vous intéresser

Les articles populaires du moment