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. P>
6 Réponses :
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. p>
que Les rails gem i liked ressemblent à ce qu'il est très facile à utiliser une fois installé: p> 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 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. P> 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. P> p> Type d'entrée = "masqué" code> - comme autrement le bot pourrait ne pas remplir le champ. P>
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
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 / ...
Et ceci est mon pot de miel: 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 =? P> P>
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.
<div id="honeypotdiv"> If you see this, leave it blank. Only bots should see this <input type="text" name="body" value="" /> </div>
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!
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.
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. P>
Utilisation de base forte> p> dans votre formulaire: p> dans votre contrôleur: p>
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();
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 i> pas code>. Plus quelque chose comme
Visiblité: caché; code> ou tout autre type de truc de CSS qui rend l'entrée invisible.
Related: Mieux implémentation de Honeypot (formulaire anti-spam)