112 votes

Comment empêcher les robots de remplir automatiquement un formulaire?

Je vais essayer de venir avec un assez bon anti-spam de mécanisme pour empêcher généré automatiquement d'entrée. J'ai lu que des techniques comme captcha, 1+1=? choses fonctionnent bien, mais ils ont aussi une étape supplémentaire d'entraver la libre utilisation rapide de l'application. (Je ne suis pas à la recherche de quelque chose comme ça merci).

J'ai essayé la configuration de certains champs masqués dans tous mes formes, display: none; Cependant, je suis presque certain d'un robot (qui est essentiellement un programme) peut être configuré pour retrouver ce formulaire champ id et tout simplement pas à le remplir.

Pensez-vous mettre en œuvre/connaissez un bon anti automatique-remplissage de formulaire-robots méthode? Est-il quelque chose qui peut être fait de manière transparente avec HTML ET/OU le serveur de traitement côté, et être (presque) à toute épreuve? (et s'il vous plaît pas de JS, on pourrait simplement le désactiver, et il y va de mon anti-spam de la méthode).

Btw, je vais essayer de ne pas compter sur les sessions pour cela (comme en comptant le nombre de fois qu'un bouton est cliqué pour prévenir les surcharges).

77voto

Ben Scheirman Points 23590

Je trouve en fait qu'un simple Pot de Miel, les travaux des champs. La plupart des robots de remplir chaque champ de formulaire qu'ils voient dans l'espoir d'obtenir autour de champ obligatoire validateurs.

http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx

Si vous créez une zone de texte, de le cacher en javascript, puis vérifiez que la valeur est vide sur le serveur, cela élimine 99% des robots, et ne cause pas de 99% des utilisateurs de toute la frustration. Le 1% restant qui ont désactivé javascript va encore voir la zone de texte, mais vous pouvez ajouter un message du genre "Laissez ce champ vide" pour les cas (si vous vous souciez d'eux à tous).

(En outre, de noter que si vous ne style="display:none" sur le terrain, puis il est beaucoup trop facile pour un robot de voir que la et jetez le domaine, c'est pourquoi je préfère le javascript).

74voto

Pindatjuh Points 6929

Facile à mettre en œuvre, mais pas infaillible (en particulier sur les "spécifique" des attaques de solution anti-spam est suivi du temps entre la forme de la soumettre et de chargement de la page.

Les Bots demande une page, d'analyser la page et de soumettre le formulaire. C'est rapide.

L'homme de type dans une URL, charger la page, attendre avant que la page soit entièrement chargée, faites défiler vers le bas, lire le contenu, décider si à commenter/compléter le formulaire, besoin de temps pour remplir le formulaire et le soumettre.

La différence dans le temps peut être subtile; et comment suivre cette fois sans les cookies implique une méthode de serveur-côté de la base de données. Ce peut être l'impact de la performance.
Aussi vous avez besoin d'ajuster le seuil de temps.

21voto

adnhack Points 71

Ce que j'ai fait est d'utiliser un champ de masquage et de mettre l'horodatage dessus, puis de le comparer avec l'horodatage du côté de PHP, s'il était plus rapide que 15 secondes (cela dépend de la taille de vos formulaires), qui était un bot. ...

J'espère que cette aide

18voto

HawleyTronics Points 71

Un moyen très efficace pour pratiquement éliminer le spam est d'avoir un champ de texte qui comporte du texte, comme "Supprimer ce texte en vue de soumettre le formulaire!" et que le texte doit être retiré afin de soumettre le formulaire.

Lors de la validation du formulaire, si le champ de texte contient le texte d'origine, ou de tout texte aléatoire pour cette question, de ne pas soumettre le formulaire. Les Bots peuvent lire les noms de formulaire et de remplir automatiquement le Nom et les champs de courrier Électronique, mais ne sais pas s'ils ont réellement supprimer le texte à partir d'un certain domaine dans l'ordre de se soumettre.

J'ai mis en œuvre cette méthode sur notre site et totalement éliminé le spam, nous avons été faire sur une base quotidienne. Il fonctionne vraiment!

13voto

Steve Points 41

Pourquoi ne pas créer une zone de saisie de champ de texte de la même couleur que l’arrière-plan, qui doit rester vierge? Cela résoudra le problème d'un affichage de lecture de bot: aucun

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X