Question

J'ai un formulaire web que les utilisateurs remplissent et les informations envoyer au serveur et stockées sur une base de données. Je suis inquiet que les robots pourraient simplement remplir le formulaire et je terminerai avec une base de données complète des dossiers inutiles. Comment puis-je empêcher les robots de remplir les formulaires? Je pense peut-être quelque chose comme la détection de robot Stackoverflow, où si elle pense que vous êtes un robot, il vous demande de vérifier que vous n'êtes pas. Y at-il une API côté serveur en Perl, Java ou PHP?

Était-ce utile?

La solution

Il existe plusieurs solutions.

  1. Utiliser un CAPTCHA. utilise des reCAPTCHA pour autant que je sais.

  2. Ajoutez un champ supplémentaire à votre formulaire et de le cacher avec CSS (display: none). Un utilisateur normal ne voit pas ce champ et ne sera donc pas le remplir. Vous vérifiez à la soumission si ce champ est vide. Sinon, vous avez affaire à un robot qui a soigneusement rempli tous les champs du formulaire. Cette technique est généralement appelée "honeypot".

  3. Ajouter une fonction de minuterie JavaScript. A la charge de page, il commence une valeur à zéro puis augmente comme le temps passe. Un utilisateur normal lirait et remplir votre formulaire pendant un certain temps et alors seulement le soumettre. Un robot serait tout simplement remplir et soumettre le formulaire immédiatement après réception. Vous vérifiez si la valeur est allée beaucoup de zéro à la soumission. Si elle a, alors il est probable un utilisateur réel. Si vous voyez juste quelques secondes (voire aucune valeur en raison des robots d'exécution JavaScript) ne alors il est probable un robot. Cela cependant ne fonctionnera que si vous décidez que vous aurez besoin de vos utilisateurs Javascript dans le but d'effectuer des opérations « écriture ».

Il existe d'autres techniques pour vous. Mais ceux-ci sont tout à fait simple et efficace.

Autres conseils

Vous pouvez utiliser reCAPTCHA (comme StackOverflow) - ils ont bibliothèques pour un certain nombre de langages de programmation.

Je l'ai toujours préféré Honeypot captcha ( article par phil haack ), comme moins invasive à l'utilisateur.

captchas apporter des problèmes d'accessibilité et seront finalement vaincus par la reconnaissance du logiciel.

Je vous recommande la lecture de ce court article sur les pièges de bots, qui comprennent les champs cachés, comme Matthew Vines et Nouveau en ville déjà suggéré.

De toute façon, vous êtes toujours libre d'utiliser les pièges captcha et bot.

CAPTCHA est grande. L'autre chose que vous pouvez faire cela empêchera 99% de votre trafic robot mais ne dérangera pas les utilisateurs est de valider les champs.

Mon site, je vérifie pour le texte dans des domaines tels que le code postal et le numéro de téléphone. Cela a supprimé tous les renseignements erronés robot non ciblés.

Vous pouvez créer un système en deux étapes dans lequel un utilisateur remplit le formulaire, mais doit ensuite répondre à un e-mail à « activer » le dossier dans une période de temps définie - dire 24 heures.

Dans l'arrière, au lieu de alimenter votre table en cours avec toutes les soumissions de formulaire, vous pouvez les mettre dans une table temporaire qui supprime automatiquement toute ligne qui est plus ancienne que votre temps alloué. Sauf si vous avez un problème de bot sérieux, alors je pense que la table ne serait pas obtenir ce grand, surtout si la première forme est à seulement quelques champs.

Une benifit de cette approche est que vous ne devez pas utiliser captcha ou une autre technologie comme celle qui pourrait créer des problèmes d'accessibilité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top