Empêcher les robots malveillants de publier du spam


15

Je me souviens d' un site fermé en raison d'une mauvaise utilisation et je me demande si les bots en ont une partie. Si le bot POSTE quelque chose sur mon site, comment puis-je le combattre? Je pensais créer des cookies et les faire changer via JavaScript + horodatage et signature (donc les cookies d'hier ne peuvent pas être utilisés aujourd'hui et la semaine prochaine).

Je suis sûr que la plupart des gens / bots utiliseraient simplement un autre site au lieu d'activer JavaScript dans leur bot.

Que puis-je faire d'autre? Je pense à la limite POST quotidienne et à un pot de miel pour les robots génériques qui publient simplement au hasard des spams.

Réponses:


13

Vous pouvez faire plusieurs choses, notamment:

  1. Mettre un faux champ que seuls les bots verront. Ensuite, si ce champ est soumis avec le reste du formulaire, vous pouvez l'ignorer (et les interdire si vous le souhaitez). Vous pouvez également piéger les mauvais robots qui suivent un lien caché .

  2. Utilisez un CAPTCHA comme reCAPTCHA

  3. Utilisez un champ qui oblige l'utilisateur à répondre à une question comme 5 + 3. Tout être humain peut y répondre, mais un bot ne saura pas quoi faire car il remplit automatiquement les champs en fonction des noms de champ. Ce champ sera donc incorrect ou manquant, auquel cas la soumission sera rejetée.

  4. Utilisez un jeton et placez-le dans une session et ajoutez-le également au formulaire. Si le jeton n'est pas soumis avec le formulaire ou ne correspond pas, il est automatisé et peut être ignoré.

  5. Recherchez les soumissions répétées de la même adresse IP. Si votre formulaire ne doit pas recevoir trop de demandes mais est soudainement probablement touché par un bot et vous devriez envisager de bloquer temporairement l'adresse IP.

  6. Utilisez Askimet . Il est excellent pour identifier le spam.


5
+1 - Et, idéalement, vous implémenterez une combinaison des suggestions énumérées ci-dessus de manière conviviale (par exemple, si un utilisateur a désactivé Javascript et échoue donc l'authentification basée sur Javascript, présentez à l'utilisateur un CAPTCHA)
danlefree

6

John Conde décrit beaucoup de bonnes approches. Le problème avec le choix d'une technique anti-bot / anti-spam est l'équilibre entre efficacité et commodité. Il serait très gênant de devoir remplir un CAPTCHA chaque fois que vous souhaitez publier un commentaire ou un message, mais si vous n'avez besoin que d'un CAPTCHA à l'inscription, cela ne dissuade parfois pas les spammeurs.

Certaines des techniques passives sont une bonne alternative, car elles ne nécessitent aucune action humaine. Le problème est que les bots deviennent de plus en plus sophistiqués, et si les bots peuvent résoudre les CAPTCHA, ils peuvent certainement traiter JS et CSS. Vous devrez donc faire preuve d'un peu d'ingéniosité, comme utiliser du CSS moins évident pour masquer vos champs de bot-trap.

Mais sur la base de votre question, je pense que vous vous rendez probablement compte qu'il ne s'agit pas de créer un site à l'épreuve des bots, mais simplement de créer suffisamment de dissuasion pour que les utilisateurs de bots choisissent simplement d'autres cibles plus faciles. Donc, ce qui est requis ici variera d'un site à l'autre et nécessitera probablement des essais et des tests d'erreur. J'essaierais d'abord les techniques les moins intrusives.

Enfin, une autre façon de supprimer le spam de votre site consiste à utiliser la modération par les pairs pour supprimer tous les commentaires soumis par des robots ou les spams envoyés manuellement qui passent.


pouvez-vous expliquer l'idée de modération par les pairs? Cela implique-t-il que les utilisateurs normaux obtiennent des droits de modérateur ou comment dois-je l'imaginer?
0xC0000022L

@STATUS_ACCESS_DENIED: désolé pour la réponse tardive, mais la modération par les pairs est essentiellement quelque chose comme digg, slashdot, stackexchange, etc. où les utilisateurs peuvent modérer le contenu du site en donnant une forme de rétroaction positive ou négative. Vous pouvez donc automatiser le système de sorte que, lorsqu'un nombre suffisant d'utilisateurs donnent des commentaires négatifs sur un élément de contenu, il soit automatiquement masqué ou signalé pour examen. Sur des sites comme StackExchange, les utilisateurs peuvent également signaler les commentaires / réponses comme spam, en les signalant aux administrateurs. Cela réduit le travail que les administrateurs rémunérés doivent faire.
Lèse majesté

Merci. Bien sûr, cela ne fonctionnerait que sur les sites à fort trafic où suffisamment d'utilisateurs peuvent être gênés pour donner leur avis;)
0xC0000022L

1

Comme John Conde l'a mentionné dans son numéro 1) et vous l'avez mentionné, le pot de miel peut très bien fonctionner pour la plupart des cas et la plupart des sites Web. Si cela se fait par un bot, vous pouvez simplement utiliser l'une des autres méthodes mentionnées par John. Mais honnêtement, si votre site a un trafic faible ou moyen, cela devrait faire l'affaire.

Exemple, un de mes favoris:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

Désormais, lorsque le formulaire sera soumis, un pourcentage extrêmement élevé de bots remplira à la fois "email" et "email_address" mais les humains ne rempliront que celui qu'ils voient, "email" et non "email_address". Donc dans votre code `/ process-form 'il vous suffit de vérifier si email_address n'est (pas) vide pour vérification.

Simple et efficace.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.