Il semble que nous allons ajouter la prise en charge de CAPTCHA à Stack Overflow. Cela est nécessaire pour empêcher les robots, les spammeurs et toute autre activité scriptée malveillante. Nous voulons seulement que les êtres humains publient ou modifient des choses ici!
Nous utiliserons un CAPTCHA JavaScript (jQuery) comme première ligne de défense:
http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs
L'avantage de cette approche est que, pour la plupart des gens, le CAPTCHA ne sera jamais visible!
Cependant, pour les personnes avec JavaScript désactivé, nous avons toujours besoin d'une solution de repli et c'est là que cela devient difficile.
J'ai écrit un contrôle CAPTCHA traditionnel pour ASP.NET que nous pouvons réutiliser.
Cependant, je préfère aller avec quelque chose de textuel pour éviter la surcharge de création de toutes ces images sur le serveur à chaque demande.
J'ai vu des choses comme ..
- Captcha texte ASCII:
\/\/(_)\/\/
- énigmes mathématiques: qu'est-ce que 7 moins 3 fois 2?
- questions triviales: qu'est-ce qui a meilleur goût, un crapaud ou un popsicle?
Peut-être que je suis juste en train d'incliner les moulins à vent ici, mais j'aimerais avoir un <noscript>
CAPTCHA compatible moins gourmand en ressources et sans image si possible.
Des idées?
la source
Réponses:
Une méthode que j'ai développée et qui semble fonctionner parfaitement (même si je ne reçois probablement pas autant de spam de commentaires que vous), consiste à avoir un champ caché et à le remplir avec une valeur fausse, par exemple:
J'ai ensuite un morceau de JavaScript qui met à jour la valeur chaque seconde avec le nombre de secondes pendant lesquelles la page a été chargée:
Ensuite, lorsque le formulaire est soumis, si la valeur antispam est toujours "lalalala", je le marque comme spam. Si la valeur antispam est un entier, je vérifie si elle est supérieure à quelque chose comme 10 (secondes). S'il est inférieur à 10, je le marque comme spam, s'il est supérieur ou égal à 10, je le laisse passer.
La théorie étant que:
L'inconvénient de cette méthode est qu'elle nécessite JavaScript, et si vous n'avez pas activé JavaScript, votre commentaire sera marqué comme spam, cependant, je passe en revue les commentaires marqués comme spam, donc ce n'est pas un problème.
Réponse aux commentaires
@MrAnalogy: L'approche côté serveur semble être une bonne idée et est exactement la même chose que le faire en JavaScript. Bon appel.
@AviD: Je suis conscient que cette méthode est sujette aux attaques directes comme je l'ai mentionné sur mon blog . Cependant, il se défendra contre votre robot de spam moyen qui soumet aveuglément les déchets à toute forme qu'il peut trouver.
la source
Mon CAPTCHA préféré :
la source
À moins que je manque quelque chose, quel est le problème avec l'utilisation de reCAPTCHA car tout le travail est effectué en externe.
Juste une pensée.
la source
J'aime cette idée, n'y a-t-il pas moyen que nous puissions simplement nous connecter au système de représentation? Je veux dire, quiconque avec +100 rep est susceptible d'être un humain. Donc, s'ils ont des représentants, vous n'avez même pas besoin de faire quoi que ce soit en termes de CAPTCHA.
Ensuite, si ce n'est pas le cas, envoyez-le, je suis sûr qu'il ne faudra pas autant de messages pour arriver à 100 et la communauté plongera instantanément sur quiconque semble spammer avec des balises offensives, pourquoi ne pas ajouter un lien "signaler le spam" que downmods par 200? Obtenez 3 de ceux-ci, le succès du spambot est déverrouillé, au revoir;)
EDIT : Je devrais également ajouter, j'aime l'idée mathématique pour le CAPTCHA non-image. Ou peut-être une simple chose de type énigme. Peut rendre la publication encore plus intéressante ^ _ ^
la source
Qu'en est-il d'un captcha de pot de miel ?
la source
Hey, if youre a human, keep this field blank!
Évitez les pires CAPTCHA de tous les temps .
Il faudrait que quelqu'un les écrive.
Vous pouvez poser des questions triviales de la même manière que ReCaptcha fait des mots imprimés. Il propose deux mots, dont l'un connaît la réponse, un autre qu'il ne connaît pas - après suffisamment de réponses sur le second, il connaît désormais également la réponse. Posez deux questions triviales:
Une femme a besoin d'un homme comme un poisson a besoin d'un?
Orange orange orange. Tapez vert.
Bien sûr, cela peut devoir être couplé à d'autres techniques, telles que les minuteries ou les secrets calculés. Les questions devraient être tournées / retirées, donc pour maintenir l'offre de questions, vous pouvez ajouter de manière ad hoc:
Entrez votre question évidente:
Vous n'avez même pas besoin d'une réponse; d'autres humains le découvriront pour vous. Vous devrez peut-être autoriser le signalement des questions comme "trop difficiles", comme celle-ci: "asdf ejflf asl; jf ei; fil; asfas".
Maintenant, pour ralentir quelqu'un qui exécute un bot de jeu StackOverflow, vous devez faire pivoter les questions par adresse IP - de sorte que la même adresse IP n'obtienne pas la même question jusqu'à ce que toutes les questions soient épuisées. Cela ralentit la construction d'un dictionnaire de questions connues, forçant le propriétaire humain des robots à répondre à toutes vos questions triviales.
la source
J'ai vu ça une fois sur le site d'un ami. Il le vend pour 20 dollars. C'est de l'art ASCII!
http://thephppro.com/products/captcha/
la source
CAPTCHA, dans sa conceptualisation actuelle, est cassé et souvent facilement contourné. AUCUNE des solutions existantes ne fonctionne efficacement - GMail ne réussit que 20% du temps, au mieux.
C'est en fait bien pire que cela, car cette statistique n'utilise que l'OCR, et il existe d'autres moyens de le contourner - par exemple, les proxys CAPTCHA et les fermes CAPTCHA. J'ai récemment donné une conférence sur le sujet à l'OWASP, mais le ppt n'est pas encore en ligne ...
Bien que CAPTCHA ne puisse pas fournir une protection réelle sous quelque forme que ce soit, cela peut suffire à vos besoins, si ce que vous voulez est de bloquer les déchets occasionnels. Mais cela n'arrêtera pas même les spammeurs semi-professionnels.
En règle générale, pour un site avec des ressources de toute valeur à protéger, vous avez besoin d'une approche à trois volets:
CAPTCHA peut aider un tout petit peu avec la deuxième broche, simplement parce que cela change l'économie - si les autres broches sont en place, il ne vaut plus la peine de déranger le CAPTCHA (coût minimal, mais toujours un coût) pour réussir dans une telle une petite quantité de spam.
Encore une fois, tous vos spams (et autres poubelles) ne seront pas générés par ordinateur - en utilisant le proxy CAPTCHA ou la ferme, les méchants peuvent avoir de vraies personnes qui vous spamment.
Le proxy CAPTCHA est lorsqu'il sert votre image aux utilisateurs d'autres sites, par exemple du porno, des jeux, etc.
Une ferme CAPTCHA a de nombreux travailleurs bon marché (Inde, Extrême-Orient, etc.) qui les résolvent ... généralement entre 2 et 4 $ pour 1000 captchas résolus. Récemment vu une publication pour cela sur Ebay ...
la source
C'est incroyablement stupide. Il y aura donc des utilisateurs qui pourront éditer n'importe quel message sur le site mais pas publier sans CAPTCHA? Si vous avez suffisamment de représentants pour voter en aval, vous avez suffisamment de représentants pour publier sans CAPTCHA. Augmentez-le si vous le devez. De plus, il existe de nombreuses méthodes de détection de spam que vous pouvez utiliser sans reconnaissance d'image, de sorte que même pour les utilisateurs non enregistrés, il ne serait jamais nécessaire de remplir ces formulaires CAPTCHA abandonnés.
la source
Assurez-vous que ce n'est pas quelque chose que Google peut répondre . Ce qui montre également un problème avec cet ordre des opérations!
la source
Pourquoi ne pas utiliser la communauté elle-même pour vérifier que tout le monde ici est humain, c'est-à-dire quelque chose comme un réseau de confiance? Pour trouver une personne vraiment digne de confiance pour démarrer le Web, je suggère d'utiliser ce CAPTCHA pour vous assurer qu'il est absolument et 100% humain.
Rapidshare CAPTCHA - Hypothèse de Riemann http://codethief.eu/kram/_/rapidshare_captcha2.jpg
Certes, il y a une toute petite chance qu'il soit trop occupé à préparer son discours de la médaille Fields pour nous aider à construire le réseau de confiance, mais bon ...
la source
Asirra est le captcha le plus adorable de tous les temps.
la source
Faites simplement résoudre par l'utilisateur des expressions arithmétiques simples:
etc.
Une fois que les spammeurs ont compris, il devrait être assez facile de les repérer. Chaque fois qu'un spammeur détecté demande, basculez entre les deux commandes suivantes:
De toute évidence, la raison pour laquelle cela fonctionne est que tous les spammeurs sont assez intelligents pour utiliser
eval
pour résoudre le captcha en une seule ligne de code.la source
rm
contre l'exécution avec-rf /
.literal_eval
(ou ses équivalents dans d'autres langues), ce qui est assez triste.rm -rf ~
serait destructeur si le script s'exécute sur la machine personnelle de quelqu'unJ'utilise la technique simple suivante, ce n'est pas infaillible. Si quelqu'un veut vraiment contourner cela, il est facile de regarder la source (c'est-à-dire qu'il ne convient pas au Google CAPTCHA) mais cela devrait tromper la plupart des bots.
Ajoutez 2 champs de formulaire ou plus comme ceci:
Utilisez ensuite CSS pour les masquer:
Lors de la soumission, vérifiez si ces champs de formulaire contiennent des données, s'ils échouent à la publication du formulaire. Le raisonnement étant que les bots liront le HTML et tenteront de remplir chaque champ de formulaire alors que les humains ne verront pas les champs de saisie et ne les laisseront pas.
Il y a évidemment beaucoup plus de choses que vous pouvez faire pour rendre cela moins exploitable, mais ce n'est qu'un concept de base.
la source
Bien que nous devrions tous connaître les mathématiques de base, le casse-tête mathématique pourrait créer une certaine confusion. Dans votre exemple, je suis sûr que certaines personnes répondraient par "8" au lieu de "1".
Une simple chaîne de texte avec des caractères aléatoires surlignés en gras ou en italique conviendrait-elle? L'utilisateur a juste besoin d'entrer les lettres en gras / italique comme CAPTCHA.
Par exemple s sdfa t werwe a jh c sad k oghvefdhrffghlfgdhowfgh
Dans ce cas, "pile" serait le CAPTCHA. Il existe évidemment de nombreuses variantes sur cette idée.
Edit: Exemples de variantes pour résoudre certains des problèmes potentiels identifiés avec cette idée:
la source
Bien que cette discussion similaire ait été lancée:
Nous essayons cette solution sur l'une de nos applications fréquemment exploitées:
Un meilleur contrôle CAPTCHA (Regardez Ma - AUCUNE IMAGE!)
Vous pouvez le voir en action sur notre recherche d'inspections de bâtiments .
Vous pouvez afficher la source et voir que le CAPTCHA est simplement HTML.
la source
Je sais que personne ne lira ceci, mais qu'en est-il du chien ou du chat CAPTCHA?
Vous devez dire lequel est un chat ou un chien, les machines ne peuvent pas le faire. Http://research.microsoft.com/asirra/
Est-ce un cool ..
la source
J'utilise simplement des questions simples auxquelles tout le monde peut répondre:
De quelle couleur est le ciel?
De quelle couleur est une orange?
De quelle couleur est l'herbe?
Cela permet à quelqu'un de programmer un bot sur votre site, ce qui ne vaut probablement pas la peine. S'ils le font, vous changez simplement les questions.
la source
Personnellement, je n'aime pas CAPTCHA, cela nuit à la convivialité et ne résout pas le problème de sécurité qui rend invalides les utilisateurs valides.
Je préfère les méthodes de détection de bots que vous pouvez faire côté serveur. Puisque vous avez des utilisateurs valides (grâce à OpenID), vous pouvez bloquer ceux qui ne "se comportent pas", il vous suffit d'identifier les modèles d'un bot et de les faire correspondre aux modèles d'un utilisateur typique et de calculer la différence.
Davies, N., Mehdi, Q., Gough, N.: Création et visualisation d'un PNJ intelligent à l'aide de moteurs de jeu et d'outils AI http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06 .pdf
Golle, P., Ducheneaut, N.: Empêcher les robots de jouer à des jeux en ligne <- ACM Portal
Ducheneaut, N., Moore, R.: The Social Side of Gaming: A Study of Interaction Patterns in a Massively Multiplayer Online Game
Bien sûr, la plupart de ces références pointent vers la détection de robots de jeux vidéo, mais c'est parce que c'était le sujet du document de notre groupe intitulé Robot Wars: Une exploration en jeu de l'identification des robots . Il n'a pas été publié ou quoi que ce soit, juste quelque chose pour un projet d'école. Je peux envoyer un courriel si vous êtes intéressé. Le fait est que même s'il est basé sur la détection de robots de jeux vidéo, vous pouvez le généraliser sur le Web car il existe un utilisateur attaché aux modèles d'utilisation.
Je suis d'accord avec la méthode de MusiGenesis de cette approche parce que c'est ce que j'utilise sur mon site Web et cela fonctionne très bien. Le processus CAPTCHA invisible est un moyen décent de bloquer la plupart des scripts, mais cela n'empêche toujours pas un scénariste de rétro-concevoir votre méthode et de "truquer" les valeurs que vous recherchez en javascript.
Je dirai que la meilleure méthode consiste à 1) établir un utilisateur afin que vous puissiez bloquer lorsqu'il est mauvais, 2) identifier un algorithme qui détecte les modèles typiques par rapport aux modèles non typiques d'utilisation du site Web et 3) bloquer cet utilisateur en conséquence.
la source
J'ai quelques idées à ce sujet que j'aime partager avec vous ...
Première idée pour éviter l'OCR
Un captcha qui a une partie cachée de l'utilisateur, mais l'image complète est les deux codes ensemble, donc les programmes OCR et les fermes de captcha lisent l'image qui inclut la partie visible et la partie cachée, essayez de les décoder tous les deux et de ne pas soumettre. .. - Je suis prêt à résoudre ce problème et à travailler en ligne.
http://www.planethost.gr/IdeaWithHiddenPart.gif
Deuxième idée pour le rendre plus facile
Une page avec beaucoup de mots que l'humain doit choisir le bon. J'ai aussi créé celui-ci, c'est simple. Les mots sont des images cliquables, et l'utilisateur doit cliquer sur la droite.
http://www.planethost.gr/ManyWords.gif
Troisième idée sans images
Identique à la précédente, mais avec des divs et des textes ou de petites icônes. L'utilisateur ne doit cliquer que sur une seule div / lettre / image correcte, quoi qu'il en soit.
http://www.planethost.gr/ArrayFromDivs.gif
Idée finale - je l'appelle CicleCaptcha
Et encore une fois mon CicleCaptcha , l'utilisateur doit localiser un point sur une image. S'il le trouve et clique dessus, alors c'est une personne, les machines échouent probablement, ou doivent créer un nouveau logiciel pour trouver un moyen avec celui-ci.
http://www.planethost.gr/CicleCaptcha.gif
Tous les critiques sont les bienvenus.
la source
Meilleur captcha de tous les temps! Peut-être avez-vous besoin de quelque chose comme ça pour vous inscrire afin de garder le riff-raff à l'extérieur.
la source
Récemment, j'ai commencé à ajouter une balise avec le nom et l'ID définis sur "message". Je l'ai mis sur caché avec CSS (affichage: aucun). Les robots spammeurs le voient, le remplissent et soumettent le formulaire. Côté serveur, si la zone de texte avec le nom d'identification est remplie, je marque le message comme spam.
Une autre technique sur laquelle je travaille génère des noms et des identifiants de manière aléatoire, certains étant des contrôles de spam et d'autres des champs réguliers.
Cela fonctionne très bien pour moi et je n'ai pas encore reçu de spam. Cependant, je reçois beaucoup moins de visiteurs sur mes sites :)
la source
Suffisamment simple, et il ne sera pas difficile de le coder. Je vois deux menaces ici:
Avec des arithmétiques simples, vous pourriez repousser la menace n ° 1, mais pas la menace n ° 2.
la source
Et si vous utilisiez une combinaison des idées captcha que vous aviez (choisissez l'une d'entre elles - ou sélectionnez l'une d'entre elles au hasard):
avec l'ajout de placer exactement le même captcha dans une section cachée CSS de la page - l'idée de pot de miel. De cette façon, vous auriez un endroit où vous vous attendriez à la bonne réponse et un autre où la réponse devrait être inchangée.
la source
J'ai eu des résultats incroyablement bons avec un simple champ "Laissez ce champ vide:". Les bots semblent remplir tout, surtout si vous nommez le champ quelque chose comme "URL". Combiné à une vérification stricte des référents, je n'ai pas encore eu de bot passé.
N'oubliez pas l'accessibilité ici. Les captchas sont notoirement inutilisables pour de nombreuses personnes utilisant des lecteurs d'écran. Les problèmes mathématiques simples ou les anecdotes très triviales (j'ai aimé la question "quelle couleur est le ciel") sont beaucoup plus conviviaux pour les utilisateurs malvoyants.
la source
Le texte simple sonne bien. Soudoyer la communauté pour faire le travail!Si vous croyez, comme moi, que les points de représentation SO mesurent l'engagement d'un utilisateur à aider le site à réussir, il est tout à fait raisonnable d'offrir des points de réputation pour aider à protéger le site contre les spammeurs.
Offrez +10 points de réputation pour chaque contribution d'une question simple et d'un ensemble de réponses correctes. La question doit être suffisamment éloignée (modifier la distance) de toutes les questions existantes, et la réputation (et la question) devrait progressivement disparaître si les gens ne peuvent pas y répondre. Disons que si le taux d'échec sur les bonnes réponses est supérieur à 20%, le soumissionnaire perd un point de réputation par réponse incorrecte, jusqu'à un maximum de 15. Donc si vous soumettez une mauvaise question, vous obtenez +10 maintenant mais finalement vous le ferez net -5. Ou peut-être qu'il est logique de demander à un échantillon d'utilisateurs de voter pour savoir si la question captcha est bonne.
Enfin, comme pour le plafond des représentants quotidiens, disons qu'aucun utilisateur ne peut gagner plus de 100 points de réputation en soumettant des questions captcha. Il s'agit d'une restriction raisonnable du poids accordé à ces contributions, et cela peut également aider à empêcher les spammeurs de semer des questions dans le système. Par exemple, vous pouvez choisir des questions non pas avec une probabilité égale mais avec une probabilité proportionnelle à la réputation du demandeur. Jon Skeet, veuillez ne pas soumettre de questions :-)
la source
Faites une requête AJAX pour un nonce cryptographique au serveur. Le serveur renvoie une réponse JSON contenant le nonce et définit également un cookie contenant la valeur nonce. Calculez le hachage SHA1 du nonce en JavaScript, copiez la valeur dans un champ caché. Lorsque l'utilisateur POSTE le formulaire, il renvoie maintenant le cookie avec la valeur nonce. Calculez le hachage SHA1 du nonce à partir du cookie, comparez-le à la valeur dans le champ caché et vérifiez que vous avez généré ce nonce au cours des 15 dernières minutes (memcached est bon pour cela). Si tous ces contrôles réussissent, postez le commentaire.
Cette technique nécessite que le spammeur s'assoit et comprenne ce qui se passe, et une fois qu'il le fait, il doit encore déclencher plusieurs demandes et maintenir l'état des cookies pour faire passer un commentaire. De plus, ils ne voient jamais l'en-
Set-Cookie
tête que s'ils analysent et exécutent le JavaScript en premier lieu et font la demande AJAX. C'est beaucoup, beaucoup plus de travail que la plupart des spammeurs ne sont prêts à passer, d'autant plus que le travail ne s'applique qu'à un seul site. Le plus gros inconvénient est que toute personne avec JavaScript désactivé ou les cookies désactivés est marquée comme spam potentiel. Ce qui signifie que les files d'attente de modération sont toujours une bonne idée.En théorie, cela pourrait être qualifié de sécurité par l'obscurité, mais en pratique, c'est excellent.
Je n'ai jamais vu un spammeur faire l'effort de briser cette technique, mais peut-être qu'une fois tous les deux mois, je reçois une entrée de spam sur le sujet à la main, et c'est un peu étrange.
la source
1) Solveurs humains
Toutes les solutions mentionnées ici sont contournées par l'approche des solveurs humains. Un spambot professionnel conserve des centaines de connexions et lorsqu'il ne peut pas résoudre CAPTCHA lui-même, il transmet la capture d'écran aux solveurs humains distants.
Je lis souvent que les solveurs humains de CAPTCHA enfreignent les lois. Eh bien, c'est écrit par ceux qui ne savent pas comment fonctionne cette industrie (du spam).
Les solveurs humains n'interagissent pas directement avec les sites qu'ils résolvent CAPTCHA. Ils ne savent même pas à partir de quels sites les CAPTCHA ont été prélevés et envoyés. Je connais des dizaines (voire des centaines) d'entreprises ou de sites Web offrant des services de solveurs humains, mais pas un seul pour l'interaction directe avec les cartes en panne.
Ces dernières ne contreviennent à aucune loi, la résolution de CAPTCHA est donc une entreprise entièrement légale (et officiellement enregistrée). Ils n'ont pas d'intention criminelle et pourraient, par exemple, avoir été utilisés pour des tests à distance, des enquêtes, des tests de concept, des prototypes, etc.
2) Spam contextuel
Les bots AI (Artificial Intelligent) déterminent les contextes et maintiennent des dialogues sensibles au contexte à différents moments à partir d'adresses IP différentes (de différents pays). Même les auteurs de blogs ne comprennent souvent pas que les commentaires proviennent de robots. Je n'entrerai pas dans beaucoup de détails mais, par exemple, les bots peuvent webscraper les dialogues humains, les stocker dans la base de données et les réutiliser simplement (phrase par phrase), afin qu'ils ne soient pas détectables comme spam par un logiciel ou même par des humains.
La réponse la plus votée disant:
ainsi la réponse honeypot et la plupart des réponses dans ce fil sont tout simplement faux.
Je suppose que ce sont des approches condamnées aux victimes
La plupart des spambots utilisent des navigateurs locaux et distants compatibles avec javascript (patchés et gérés) provenant de différentes adresses IP (de différents pays) et ils sont assez intelligents pour contourner les pièges à miel et les pots à miel.
Le problème différent est que même les propriétaires de blogs ne peuvent pas fréquemment détecter que les commentaires proviennent du robot car ils proviennent vraiment de dialogues humains et de commentaires récoltés à partir d'autres forums Web (forums, commentaires de blog, etc.)
3) Nouvelle approche conceptuelle
Désolé, j'ai supprimé cette partie comme précipitée
la source
En fait, cela pourrait être une idée d'avoir un ensemble de captcha lié à la programmation. Par exemple:
Il y a la possibilité que quelqu'un construise un vérificateur de syntaxe pour contourner cela, mais c'est beaucoup plus de travail pour contourner un captcha. Mais vous avez l'idée d'avoir un captcha apparenté.
la source
$var == array(1 = 'one');;
") est1
, non3
? (Sérieusement. Essayez$var == array(1 => 'one');;
) ^ _ ~Je dois admettre que je n'ai aucune expérience de la lutte contre les spambots et je ne sais pas vraiment à quel point ils sont sophistiqués. Cela dit, je ne vois rien dans l'article jQuery qui ne pourrait pas être accompli uniquement sur le serveur.
Pour reformuler le résumé de l'article jQuery:
Une autre option, si vous souhaitez utiliser l'image traditionnelle CAPTCHA sans la surcharge de leur génération à chaque demande est de les pré-générer hors ligne. Il vous suffit ensuite d'en choisir au hasard un à afficher avec chaque formulaire.
la source