20
JAN

Lutter contre le spam efficacement - Conseil #2

Publié le 20/01/09 à 09h51 par DJo

Le spam est un véritable fléau que ce soit dans vos boîtes mails, dans les commentaires de vos sites, dans les inscriptions de membres ... bref partout où un bot malintentionné pourrait passer !

Spam

 

Conseil n°1: Un champ caché dans votre formulaire HTML

 

Astuce anti-spam #2: Une devinette pour vos visiteurs

Théorie

Toujours dans l'optique de contrer ces robots qui parcourent inlassablement le web à la recherche d'un formulaire non protégé pour attaquer, nous allons voir une technique efficace qui consiste à poser une question à votre visiteur...

Enigme Fouras

Comme vous ne voulez pas non plus que vos visiteurs se prennent trop la tête à résoudre votre énigme (Oubliez les énigmes du père Fouras...), proposez par exemple de résoudre une addition basique comme "2 plus 2".

Vous n'aurez ensuite plus qu'à contrôler la validité du résultat après soumission du formulaire pour le valider.

 

Pratique

1) Ajoutez un champ en fin de formulaire:

<p>Combien font "2 plus 2" ?  <input type='text' name='special' /></p>

2) Vérifiez la validité de l'entrée avec votre script serveur:

if ( isset($_POST['special']) && $_POST['special'] == '4' ) {
    // HUMAIN
}
else {
    // ROBOT !!
}

Facile non ?

 

Bon, cette solution a des limites car, si le développeur spammeur veut attaquer votre site en particulier, il programmera son robot pour entrer 4 dans le champ en question.

Dans l'idéal, il faudrait générer une nouvelle addition et mettre le résultat en session pour vérification.

1) Générez la nouvelle addition au chargement de votre page:

if (!$_SESSION) session_start();
$chiffre1 = rand(1,10);
$chiffre2 = rand(1,10);
$_SESSION['resultAddition'] = $chiffre1 + $chiffre2;

2) Affichage du champ en fin de formulaire:

<p>Combien font "<?php echo $chiffre1.' plus '.$chiffre2; ?>" ?  <input type='text' name='special' /></p>

3) Contrôle du champ après la soumission du formulaire:

if (!isset($_SESSION)) session_start();
if ( isset($_SESSION['resultAddition']) &&  isset($_POST['special']) && 
$_SESSION['resultAddition'] == $_POST['special']) {
    // HUMAIN
}
else {
    // ROBOT !!
}

 

Avec ça, vous devriez être protégé ! Si ça ne vous suffit encore pas, attendez le conseil de demain !

Personne n'a baraguiné de chtite phrase pour le moment !


Ajouter un Commentaire

Pour poster un commentaire, vous devez être identifié. Vous pouvez choisir parmi ces trois méthodes d'identification:

Compte la Ferme du Web

Identifiez-vous
Inscrivez-vous

Compte Facebook

Compte Twitter

Connexion avec votre compte twitter
Rechercher sur la Ferme du web