19
JAN

Lutter contre le spam efficacement - Conseil #1

Publié le 19/01/09 à 08h45 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

Voici une série d'astuces ou moyens permettant de lutter contre le spam sur vos sites ou applications web.

 

Astuce anti-spam #1: Un champ anti-spam caché dans vos formulaire

Pour lutter contre le spam, vous devez vous mettre à la place des robots spammeurs:

Quel est leur but ?

Promouvoir leurs produits illégaux ou augmenter leur référencement en plaçant un bon petit backlink en dur sur vos sites.

Comment fonctionnent-ils ?

Très simple, il s'agit de scripts qui vont parcourir le web, y récupérer le maximum de liens pour toujours avoir des pages à se mettre sous la dent.

Puis pour chaque page, ils vont chercher si il y'a des formulaires HTML.

Dès qu'un formulaire HTML est trouvé (<form> dans le code source d'une page), le robot va tout simplement remplir tous les champs du formulaire avec des valeurs plus ou moins bonnes en fonction du nom donné au champ.

 

Exemple: input type='text' name='username' : Ce genre de champ sera automatiquement rempli à l'aide d'une liste de pseudos aléatoires

Et le formulaire est finalement submit par le robot.

Résultat: Un bon spam sur votre site !

Robot de Spam

 

La solution du jour:

Théorie

Nous allons considérer que les robots spammeurs ne sont pas encore assez intelligents pour aller analyser vos styles CSS.

Une solution, très simple et qui marche parfaitement bien (pour le moment), consiste à ajouter un ou plusieurs champs dans votre formulaire qui seront cachés à vos visiteurs à l'aide d'un "display: none;", mais visibles par les robots spammeurs (car ils analysent la source).

Vous pourrez alors distinguer facilement qui est un robot et qui est un humain: Celui qui rempli ce champ est un bot de spam...

Une simple condition derrière votre formulaire (pour vérifier que le champ est bien vide) permettra de contrer 90% des robots spammeurs.

 

Pratique

1) Créez une classe avec un nom bidon et ajoutez là dans votre fichier CSS:

.monChampSpecial { display: none; }

2) Ajoutez un champ dans votre formulaire (balise name anglais explicite de préférence):

<p class="monChampSpecial">
	Username: <input name="username" type="text" />
</p>

Vos visiteurs ne le verront pas mais les bots s'empresseront de le remplir !

3) Contrôlez ce champ lors de la soumission du formulaire:

Exemple en PHP:

if ( empty ($_POST['username']) ) {
    // VALIDE: Le formulaire a été posté par un humain
}
else {
    // SPAM!! Le formulaire est rempli, c'est un Bot de spam !
}

 

Baraguiné par lemoussel le 19/01/09 à 12h55
lemoussel sur La Ferme du Web
Une autre idée ne sera t'elle pas d'encapsuler le code HTML du formulaire dans du JavaSCript ?
Actuellement, c'est que je réalise lors que je mets un lien pour adresser un courrier (mailto:) a l'administrateur du site. Et à ce jour aucun message "spam" dans cet Bal.
Baraguiné par DJo le 19/01/09 à 15h25
DJo sur La Ferme du Web
Oui mais dans ce cas là, tu restreint ton formulaire à ceux qui ont le Javascript d'activé.
Hors j'en connais pas mal qui naviguent en no script ...
Mais effectivement, c'est une solution.
Baraguiné par lemoussel le 21/01/09 à 07h50
lemoussel sur La Ferme du Web
D'accord pour le Noscript. Ben que dans la plupart de mes formulaires je suis obligé d'avoir du JavaScript pour un minimum de controle de la saisie.
Baraguiné par DJo le 21/01/09 à 09h18
DJo sur La Ferme du Web
Oui c'est sûr, mais le javascript ne dois être qu'un plus pour l'utilisateur et ne doit pas servir de contrôle de formulaire. Sinon gare aux spams :P
Baraguiné par le 28/02/11 à 16h33
Maintenant avec le Html5, il y a la possibilité de mettre des optionnels et obligatoires, je pense que dans ce cas, il faut que 2 champ ( le caché et le non caché ) puisse contenir la meme information, en optionnel.
Je verrait tres bien la triple verification du mot de passe.
Le premier pour l'utilisateur, le deuxieme pour verifier que tu n'a pas tapper n'importe quoi, et le troisieme caché, pour le robot

Sinon je ne sait pas si ca fonctionne, mais si je met un input submit avec un nom, et a coté un button avec un evenement au click submit, que lon verifie lequel a été fait, ca devrait fonctionner normalement
Baraguiné par le 27/06/11 à 11h11
Bonjour,
je suis débutant et rame légèrement pour faire mon formulaire..
J'ai suivis les instructions mais je ne comprend pas comment je peux adapter mon php, pouvez vous me l'indiquer ?? voici mon code qui envoi à ma boite mail :


merci d avance
Baraguiné par le 27/06/11 à 11h13
si je met pas le code ...
Baraguiné par le 27/06/11 à 11h21
Apparament les copiés collés n'existent pas...
donc

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

Connexion avec Facebook

Compte Twitter

Connexion avec votre compte twitter
Rechercher sur la Ferme du web