12
votes

Comment puis-je ajouter des champs de miel à mes formulaires?

J'ai lu sur l'ajout de champs de pot de miel à mes formes pour la lutte contre les robots / spam. Seul le problème n'est aucun guide ou quoi que ce soit sur où commencer. De nombreux sites disent à faire un champ qui est caché que seul le bot de spam se remplirait. Mais comme je suis nouveau à cela, je ne sais pas où je commencerais dans ma demande. Quelqu'un pourrait-il me donner les conseils sur la manière de la configurer? J'essaie de faire ma page d'inscription à l'intention d'utiliser des champs de pot de miel.


3 commentaires

Ajoutez simplement un champ caché et vérifiez-le sur la soumission; Je ne suis pas sûr de quelle est la confusion.


Par "caché" signifie non visible à l'écran pas . Plus quelque chose comme Visiblité: caché; ou tout autre type de truc de CSS qui rend l'entrée invisible.


Related: Mieux implémentation de Honeypot (formulaire anti-spam)


6 Réponses :


19
votes

L'idée de base derrière Honeypot Captchas est que vous avez un champ caché (via CSS) nommé quelque chose comme "Formulaire" ou "Email" ou "Contenu" qui (à un bot, lisant simplement le nom du champ) semble être Rempli. Ensuite, lorsque le serveur examine la soumission, vous assurez que ces champs cachés sont vides. S'ils ne sont pas, alors vous signalez le message comme un bot.

Voici un exemple bien expliqué (avec un certain code dans ASP) et Voici un gemme de rails qui fournit des captchas Honeypot.

que Les rails gem i liked ressemblent à ce qu'il est très facile à utiliser une fois installé: xxx

bien que si vous souhaitez apprendre à propos de l'approche plutôt que de simplement l'avoir mis en œuvre, je vous recommanderais que vous soyez en train de rouler le vôtre. Si vous roulez le vôtre, il est important de vous assurer que le champ est masqué par CSS (ou une autre astuce de style / de positionnement) et non Type d'entrée = "masqué" - comme autrement le bot pourrait ne pas remplir le champ.

Comme Michael Mior a souligné dans les commentaires, il est important d'avoir un message à côté du champ masqué indiquant à l'utilisateur de le laisser vide - sinon les utilisateurs ayant des lecteurs d'écran peuvent le remplir à tort. Cette fonctionnalité est manquante. Cette fonctionnalité est manquante. Cette fonctionnalité est manquante. Cette fonctionnalité est manquante. de la pierre judiciaire que j'ai liée à - donc si vous faites un site Web accessible (que vous devriez presque certainement être), vous devrez peut-être le modifier ou faire rouler votre propre.


Gardez à l'esprit que cela Le truc n'est pas infaillible - il n'y a rien d'empêcher un bot de rendu de la page et de déterminer quels champs sont visibles pour l'utilisateur avant de remplir tout dans - mais ce type de bot serait considérablement plus complexe que celui qui vient d'examiner le formulaire HTML. Un Captcha Honeypot est susceptible d'être très efficace à l'arrêt des robots simples.


6 commentaires

Notez que le gemme que vous avez référencé a des problèmes d'accessibilité. Il est important d'avoir un message dire à l'utilisateur de quitter le champ vide. Cela peut être masqué avec le champ de formulaire, mais il garantit que les personnes utilisant des lecteurs d'écran seront capables de laisser correctement le champ vide.


@Michaelmior bon point. Y a-t-il un meilleur bijou que je devrais créer un lien vers?


Donc, si je devais rouler le mien. Dois-je commencer par faire un attribut virtuel, puis une méthode qui stipule qu'il doit être laissé en blanc et la cache également hors de l'écran avec un positionnement absolu -9999?


Jetez un coup d'œil à mon édition, je pense avoir cela juste avoir un autre problème.


Avez-vous inclure rails.application.routes.url_helpers ? Si vous rencontrez toujours des problèmes, vous voudrez peut-être ouvrir une autre question (puisque la nouvelle question est suffisamment différente pour l'original).


Vous avez raison, je viens de faire une nouvelle question, merci pour l'aide. Si vous êtes intéressé, c'est le nouveau: Stackoverflow. com / questions / 8883021 / ...



-7
votes

Et ceci est mon pot de miel: xxx

Si vous êtes toujours paranoïaque avec ceci, essayez une approche supplémentaire: Utilisez JavaScript pour éliminer le champ une fois que l'utilisateur est rempli à tort de la valeur et concentrez-vous sur la même zone de texte. Vous pouvez également demander à l'utilisateur de faire un simple mathématique comme répondant: 1 + 2 =?


2 commentaires

Avez-vous considéré "Afficher: Aucun"?


Je n'aime pas la frontière: aucune parce que le champ est toujours cliquant sur l'interface utilisateur. De plus, il peut encore apparaître car le fond de l'élément contenant est différent de l'entrée. Cela ne bloque pas l'élément d'être visible. De plus,
n'est pas HTML et ne fait rien dans XHTML.



0
votes
<div id="honeypotdiv">
If you see this, leave it blank. Only bots should see this
<input type="text" name="body" value="" />
</div>

1 commentaires

Cette réponse est arrivée dans la file d'attente de révision de la basse qualité, probablement parce que vous n'avez pas expliqué le code. Si vous expliquez (dans votre réponse), vous êtes beaucoup plus susceptible d'obtenir plus de upvotes - et le questionneur est plus susceptible d'apprendre quelque chose!



1
votes
HTML - 
<input type="text" name="verifyEmail" id="verifyEmail">

PHP Validation -
if(strlen($_POST['verifyEmail']) > 0){
   header('location: {some redirect URL here..}'); //Send them way away from your form :)
die(); //Stop execution of the script
}

CSS - 
#verifyEmail{
position:fixed; 
visibility: hidden; 
top:-500px; left:-500px;
}
dislplay: none; does not show to a bot in HTML (try it with view source)
visibility: hidden; left:-500px; top:-500px; (displays when you view source)I used display:none honey pots for a while, then switched to visibility option when it occurred to me that the field didn't show in the source code. Do it with a class or id in CSS, not inline style. Notify users with label is good idea, and name is not so important because most bots generally fill in all fields.Definitely not a catch all but very effective if used with a basic math captcha.

0 commentaires

2
votes

try invisible_captcha (prend en charge les rails 3, 4 et 5).

Ça marche assez bien Pour les sites de petite et moyenne (en termes de trafic), avec une approche simple et flexible. Il fournit également des soumissions sensibles au temps.

Utilisation de base

dans votre formulaire: xxx

dans votre contrôleur: xxx


0 commentaires

1
votes

Je vais partager ce qui fonctionne à 100% pour mon site en ce moment.

Pendant près d'une semaine, nous avons testé des moyens d'empêcher le nombre élevé de faux utilisateurs appelés "bots de spam" ainsi que "inscriptions de force brute", ainsi que "des enregistrements de la force brute". sont de faux utilisateurs. p>

Vous pouvez trouver sur Internet de nombreuses façons d'appliquer ce qu'on appelle un HONYPOT ou un champ masqué dans le formulaire d'inscription. P>

Le but de ce truc est que nous avons imbécile la fausse enregistrement telle qu'elle remplira toujours des données dans le champ masqué, ce qui entraîne le processus d'enregistrement empêchant les fausses enregistrements. P>

Nous avons mentionné que de nombreuses variantes de ce truc se trouvent sur Internet et nous allons Expliquez pourquoi notre code est cité à 100% de travail que pendant 2 jours maintenant, il arrêtais tous les robots de spam et toutes les inscriptions de force brute. P>

Le secret est de savoir comment nous cachons le champ avec un nom comme "Field1" comme Les bots attraperont si nous utilisons un nom commun comme un mot de passe ou un code postal, etc. à l'aide d'un nom comme champ comme champ1 et autocomplete = Off Force les robots à remplir dans le champ et empêchent de déterminer ce que le champ est pour, il continuera donc à le remplir avec des données tuant la tentative d'enregistrement. P>

Cette image ci-dessous montre le code que nous avons utilisé dans le formulaire d'inscription. P>

 if(!empty($_POST['field1'])) die();


0 commentaires