web-dev-qa-db-fra.com

Quelle est la meilleure façon de cacher un captcha Honeypot?

Je cherchais des alternatives à l'utilisation du captcha en raison de sa gêne pour les utilisateurs, en particulier parce qu'ils deviennent de plus en plus difficiles à résoudre pour nous, les humains. J'ai donc découvert qu'une solution peut-être bonne serait d'utiliser un captcha de pot de miel - un champ censé rester vide - et pour le cacher aux utilisateurs, pour vous assurer qu'ils ne le remplissent pas.

Donc ma vraie question ici est:

Du point de vue de l'expérience utilisateur, quelle est, parmi les options suivantes, la meilleure solution pour y parvenir ou existe-t-il un meilleur moyen et pourquoi?

  • Utilisation display:none;
  • Colorez les champs de la même manière (ou très similaire à) la couleur d'arrière-plan.
  • Utilisez le positionnement pour déplacer un champ hors de la zone visible de la page.
  • Rendre un élément trop petit pour afficher le champ de pot de miel contenu.
  • Laissez les champs visibles, mais utilisez le positionnement pour les couvrir d'un élément d'obscurcissement.
  • Utilisez JavaScript pour effectuer l'une de ces modifications.
  • Laissez les pots de miel affichés mais dites aux gens de ne rien y entrer.
6
FabioG

En pleine vue.

Ce sont quelques réflexions.

  • utiliser l'affichage: aucun.
    • Cela semble être une bonne option car il n'apparaît pas sur la page, mais comme JonW le mentionne, certains bots peuvent reconnaître que ce n'est pas censé être là. Bien que l'essor de JavaScript et toutes les interactions qu'il ait, je pense qu'il est difficile de savoir si c'est un truc ou non.
  • Colorez les champs de la même manière (ou très similaire à) la couleur de fond.
    • Ne faites pas cela, vous seriez surpris de voir combien de fois vous obtiendriez un formulaire valide avec quelque chose dans ce domaine, par erreur probablement, mais toujours là.
  • Utilisez le positionnement pour déplacer un champ hors de la zone visible de la page.
    • Très probablement l'un des meilleurs, l'utilisateur ne le verra pas, il peut donc interagir.
  • Rendre un élément trop petit pour afficher le champ de pot de miel contenu.
    • Celui-ci sonne bien, mais il y a un problème d'accessibilité. J'expliquerai ci-dessous.
  • Laissez les champs visibles, mais utilisez le positionnement pour les couvrir d'un élément d'obscurcissement.
    • Ce n'est pas une bonne idée, la visualisation peut changer, bouger ou être affectée par quelque chose que vous n'avez pas considéré et l'utilisateur verra alors quelque chose qui ne sait pas à quoi il sert.
  • Utilisez Javascript pour effectuer l'une de ces modifications.
    • Vaut mieux pas.
  • Laissez les pots de miel affichés mais dites aux gens de ne rien y entrer.
    • C'est la meilleure solution. Clair de toute perspective et vraiment accessible.

Le problème avec les solutions qui impliquent de modifier la position ou la représentation, c'est qu'elles ne sont pas accessibles, donc les utilisateurs de technologies d'assistance devront toujours y faire face, mais ils n'auront aucune information et aucune idée de quoi faire avec ça, pas de mentionner les "accidents" possibles où certaines informations peuvent se retrouver là juste par accident.

Considérant l'un des commentaires sur le remplissage des champs et le fait de laisser celui-ci vide, c'est vrai, chaque système a ses défauts. Mais je pense que ce défaut est un peu "meilleur" que les autres défauts. De plus, vous pouvez combiner votre méthode en alternant le champ vide avec aucun, et une question humaine différente comme 2 + 2. De cette façon, vous auriez au moins 3 modèles de formulaire, tous accessibles mais imprévisibles pour un script automatisé. Certains défauts peuvent encore survenir, mais jusqu'à présent, cela semble être une bonne option.

4
PatomaS

J'utilise une classe CSS générique qui a display: none; dedans.

Si le bot récupère le CSS et lit la définition de classe, il mérite tous mes compliments.

1
Bobby Tables

La capture de pot de miel est ABSOLUMENT un mouvement UX positif car il enlève à l'utilisateur la responsabilité de résoudre les problèmes que nous devrions résoudre - et cela n'a vraiment rien à voir avec eux. Capturez SUX pour les utilisateurs.

J'ai utilisé cette technique de manière intensive (en utilisant simplement display: none) et je n'ai aucun problème (dont j'ai entendu parler) avec des robots qui la contournent. Ce n'est pas la fin du monde si quelques formulaires remplis de bots passent - c'est à nous de gérer.

Je ne comprends vraiment pas pourquoi les gens n'utilisent plus cette technique pour les formes de tous les jours.

0