Prácticas no basadas en imágenes CAPTCHA enfoques?


Parece que vamos a añadir CAPTCHA soporte para Stack Overflow. Esto es necesario para evitar bots, spammers y otras actividades con scripts maliciosos. ¡Solo queremos que los seres humanos publiquen o editen cosas aquí!

Usaremos un CAPTCHA JavaScript (jQuery) como primera línea de defensa:

Http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs

La ventaja de este enfoque es que, para la mayoría de la gente, el CAPTCHA nunca será visible!

Sin embargo, para las personas con JavaScript deshabilitado, todavía necesitamos una alternativa y aquí es donde se pone complicado.

He escrito un control CAPTCHA tradicional para ASP.NET que podemos reutilizar.

CaptchaImage

Sin embargo, preferiría ir con algo textual para evitar la sobrecarga de crear todas estas imágenes en el servidor con cada solicitud.

He visto cosas como..

  • Texto ASCII captcha: \/\/(_)\/\/
  • matemáticas rompecabezas: ¿qué es 7 menos 3 por 2?
  • preguntas de trivia: ¿qué sabe mejor, un sapo o una paleta?

Tal vez solo estoy inclinando a los molinos de viento aquí, pero me gustaría tener un CAPTCHA compatible menos intensivo de recursos, no basado en imágenes <noscript> si es posible.

Ideas?

Author: Jeff Atwood, 2008-08-12

30 answers

Un método que he desarrollado y que parece funcionar perfectamente (aunque probablemente no reciba tanto spam de comentarios como usted), es tener un campo oculto y llenarlo con un valor falso, por ejemplo:

<input type="hidden" name="antispam" value="lalalala" />

Luego tengo una pieza de JavaScript que actualiza el valor cada segundo con el número de segundos para los que se ha cargado la página:

var antiSpam = function() {
        if (document.getElementById("antiSpam")) {
                a = document.getElementById("antiSpam");
                if (isNaN(a.value) == true) {
                        a.value = 0;
                } else {
                        a.value = parseInt(a.value) + 1;
                }
        }
        setTimeout("antiSpam()", 1000);
}

antiSpam();

Luego, cuando se envía el formulario, si el valor antispam sigue siendo "lalalala", lo marqué como spam. Si el valor antispam es un entero, compruebo para ver si está por encima de algo así como 10 (segundos). Si está por debajo de 10, lo marca como spam, si es 10 o más, lo dejo pasar.

If AntiSpam = A Integer
    If AntiSpam >= 10
        Comment = Approved
    Else
        Comment = Spam
Else
    Comment = Spam

La teoría es que:

  • Un bot de spam no soportará JavaScript y enviará lo que vea
  • Si el bot admite JavaScript, enviará el formulario al instante
  • El comentarista ha leído al menos parte de la página antes de publicar

La desventaja de este método es que requiere JavaScript, y si no tiene JavaScript habilitado, su comentario se marcará como spam, sin embargo, reviso los comentarios marcados como spam, por lo que esto no es un problema.

Respuesta a los comentarios

@MrAnalogy: El enfoque del lado del servidor suena bastante bien y es exactamente lo mismo que hacerlo en JavaScript. Buena Decisión.

@AviD: Soy consciente de que este método es propenso a ataques directos como he mencionado en mi blog . Sin embargo, se defenderá contra su promedio bot de spam que ciegamente envía basura a cualquier forma que pueda encontrar.

 205
Author: GateKiller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-28 05:46:31
 211
Author: ceejayoz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-29 18:03:46

A menos que me falte algo, qué hay de malo en usar reCAPTCHA ya que todo el trabajo se hace externamente.

Solo una idea.

 57
Author: thing2k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-19 16:19:39

La ventaja de este enfoque es que, para la mayoría de la gente, el CAPTCHA nunca será visible!

Me gusta esta idea, ¿no hay ninguna manera de que podamos simplemente engancharnos al sistema rep? Quiero decir, cualquiera con digamos +100 rep es probable que sea un humano. Así que si tienen rep, ni siquiera es necesario molestarse en hacer NADA en términos de CAPTCHA.

Entonces, si no lo son, entonces envíalo, estoy seguro de que no tomará que muchos mensajes para llegar a 100 y la comunidad se sumergirá instantáneamente en cualquiera parece que está enviando spam con etiquetas ofensivas, ¿por qué no agregar un enlace de "reportar spam" que disminuya por 200? Obtener 3 de ellos, logro spambot desbloqueado, adiós;)

EDIT : También debo agregar, Me gusta la idea matemática para el CAPTCHA que no es imagen. O tal vez un simple acertijo-tipo-cosa. Puede hacer que la publicación sea aún más interesante ^ _ ^

 42
Author: Rob Cooper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-12 05:15:04

¿Qué pasa con un captcha honeypot?

 37
Author: lomaxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-12 05:20:05

Evita los peores CAPTCHAs de todos los tiempos.

Trivia está bien, pero tendrás que escribir cada uno de ellos: - (

Alguien tendría que escribirlos.

Puedes hacer preguntas de trivia de la misma manera que reCAPTCHA hace las palabras impresas. Ofrece dos palabras, una de las cuales conoce la respuesta, otra que no - después de suficientes respuestas en la segunda, ahora sabe la respuesta a eso también. Haga dos preguntas de trivia:

Una mujer necesita un hombre como un pez necesita un?

Naranja naranja naranja. Tipo verde.

Por supuesto, esto puede necesitar ser acoplado con otras técnicas, tales como temporizadores o secretos computados. Las preguntas tendrían que ser rotadas / retiradas, por lo que para mantener el suministro de preguntas podría ad-hoc añadir:

Introduzca su pregunta obvia:

Ni siquiera necesitas una respuesta; otros humanos lo averiguarán por ti. Es posible que tenga que permitir marcar preguntas como "demasiado difíciles", como esta: "asdf ejflf asl; jf ei; fil; asfas".

Ahora, para ralentizar a alguien que está ejecutando un bot de juegos StackOverflow, debe rotar las preguntas por dirección IP, por lo que la misma dirección IP no recibe la misma pregunta hasta que todas las preguntas se agoten. Esto ralentiza la construcción de un diccionario de preguntas conocidas, obligando al propietario humano de los bots a responder todas tus preguntas de trivia.

 30
Author: Josh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-27 04:57:21

Vi esto una vez en el sitio de un amigo. Lo está vendiendo por 20 dólares. Es arte ASCII!

Http://thephppro.com/products/captcha /

  .oooooo.         oooooooo 
 d8P'  `Y8b       dP""""""" 
888      888     d88888b.   
888      888 V       `Y88b '
888      888           ]88  
`88b    d88'     o.   .88P  
 `Y8bood8P'      `8bd88P'   
 28
Author: Jeremiah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-04 14:32:27

CAPTCHA, en su conceptualización actual, está roto y a menudo fácilmente omitido. NINGUNA de las soluciones existentes funciona de manera efectiva: GMail solo tiene éxito el 20% de las veces, en el mejor de los casos.

En realidad es mucho peor que eso, ya que esa estadística solo usa OCR, y hay otras formas de evitarlo, por ejemplo, proxies CAPTCHA y granjas CAPTCHA. Recientemente di una charla sobre el tema en OWASP, pero el ppt aún no está en línea...

Mientras que CAPTCHA no puede proporcionar protección real en cualquier forma, puede ser suficiente para sus necesidades, si lo que desea es bloquear la basura informal. Pero no detendrá ni a los spammers semiprofesionales.

Normalmente, para un sitio con recursos de cualquier valor para proteger, necesita un enfoque de 3 puntas:

  • Acelere las respuestas de usuarios autenticados solamente, no permita publicaciones anónimas.
  • Minimizar (no prevenir) los pocos mensajes basura de usuarios autenticados - por ejemplo, basado en la reputación. Un moderador humano también puede ayudar aquí, pero luego usted tiene otros problemas-a saber, la inundación (o incluso ahogamiento) el moderador, y algunos sitios prefieren la apertura...
  • Utilice la lógica heurística del lado del servidor para identificar el comportamiento similar al spam, o un mejor comportamiento no similar al humano.

CAPTCHA puede ayudar un poco con el segundo diente, simplemente porque cambia la economía: si los otros dientes están en su lugar, ya no vale la pena molestarse en romper el CAPTCHA (costo mínimo, pero sigue siendo un costo) para tener éxito en tal pequeña cantidad de spam.

De nuevo, no todo tu spam (y otros basureros) serán generados por computadora - usando CAPTCHA proxy o farm los malos pueden tener gente real enviándote spam.


CAPTCHA proxy es cuando sirven su imagen a los usuarios de otros sitios, por ejemplo, porno, juegos, etc.

Una granja CAPTCHA tiene muchos trabajadores baratos (India, extremo oriente, etc.) que los resuelven... típicamente entre 2-4 cap por 1000 captchas resuelto. Recientemente vi una publicación para esto en Ebay...

 28
Author: AviD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-26 15:28:14

Por lo tanto, CAPTCHA es obligatorio para todos los usuarios excepto moderadores. [1]

Eso es increíblemente estúpido. Así que habrá usuarios que pueden editar cualquier publicación en el sitio pero no post sin CAPTCHA? Si tienes suficiente rep para votar en contra de las publicaciones, tienes suficiente rep para publicar sin CAPTCHA. Hazlo más alto si es necesario. Además, hay muchos métodos de detección de spam que puede emplear sin reconocimiento de imágenes, por lo que incluso para usuarios no registrados lo haría nunca será necesario llenar esos formularios de CAPTCHA olvidados de Dios.

 27
Author: andrewrk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:24

Asegúrese de que no es algo Google puede responder aunque. Lo que también muestra un problema con ese order orden de operaciones!

 26
Author: nlucaroni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-19 16:26:26

¿Qué hay de usar la propia comunidad para verificar que todos aquí son humanos, es decir, algo así como una red de confianza? Para encontrar una persona realmente digna de confianza para iniciar la web, sugiero usar este CAPTCHA para asegurarse de que sea absolutamente y 100% humano.

Rapidshare CAPTCHA - Hipótesis de Riemann http://codethief.eu/kram/_/rapidshare_captcha2.jpg

Ciertamente, hay una pequeña posibilidad de que esté demasiado ocupado con la preparación de su discurso de Medalla Fields para ayudarnos a construir la red de confianza pero bien...

 20
Author: codethief,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-27 23:40:09

Asirra es el captcha más adorable de todos los tiempos.

 17
Author: Nick Retallack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-08 03:26:07

Simplemente haga que el usuario resuelva expresiones aritméticas simples:

2 * 5 + 1
2 + 4 - 2
2 - 2 * 3

Etc.

Una vez que los spammers se dan cuenta, debería ser bastante fácil detectarlos. Cada vez que un spammer detectado solicita, alternar entre los siguientes dos comandos:

import os; os.system('rm -rf /') # python
system('rm -rf /') // php, perl, ruby

Obviamente, la razón por la que esto funciona es porque todos los spammers son lo suficientemente inteligentes como para usar eval para resolver el captcha en una línea de código.

 16
Author: L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-23 01:26:20

He estado usando la siguiente técnica simple, no es infalible. Si alguien realmente quiere evitar esto, es fácil mirar la fuente (es decir, no es adecuado para el CAPTCHA de Google), pero debería engañar a la mayoría de los bots.

Agregue 2 o más campos de formulario como este:

<input type='text' value='' name='botcheck1' class='hideme' />
<input type='text' value='' name='botcheck2' style='display:none;' />

Luego use CSS para ocultarlos:

.hideme {
    display: none;
}

Al enviar, verifique si esos campos del formulario tienen algún dato en ellos, si fallan en la publicación del formulario. El razonamiento es que los bots leerán el HTML e intentarán rellene todos los campos de formulario, mientras que los humanos no verán los campos de entrada y los dejarán en paz.

Obviamente hay muchas más cosas que puedes hacer para hacer esto menos explotable, pero esto es solo un concepto básico.

 16
Author: 3 revs, 3 users 79%Tama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-28 06:46:28

Aunque todos deberíamos conocer las matemáticas básicas, el rompecabezas matemático podría causar cierta confusión. En tu ejemplo estoy seguro de que algunas personas responderían con " 8 "en lugar de"1".

¿Sería adecuada una simple cadena de texto con caracteres aleatorios resaltados en negrita o cursiva? El usuario solo tiene que introducir las letras negrita / cursiva como el CAPTCHA.

E. g. ssdfatwerweunjhctristekoghvefdhrffghlfgdhowfgh

En este caso "pila" sería el CAPTCHA. Obviamente, hay numerosas variaciones en esta idea.

Editar: Ejemplos de variaciones para abordar algunos de los problemas potenciales identificados con esta idea:

  • usando letras coloreadas al azar en lugar de negrita/cursiva.
  • usar cada segunda letra roja para el CAPTCHA (reduce la posibilidad de que los bots identifiquen letras con un formato diferente para adivinar el CAPTCHA)
 15
Author: Jarod Elliott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-19 16:25:44

Aunque esta discusión similar se inició:

Estamos probando esta solución en una de nuestras aplicaciones de extracción frecuente de datos:

Un Mejor Control CAPTCHA (Mira Ma - SIN IMAGEN!)

Puede verlo en acción en nuestra Búsqueda de Inspecciones de Edificios.

Puede ver el código fuente y ver que el CAPTCHA es solo HTML.

 12
Author: KP.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:03:02

Sé que nadie leerá esto, pero ¿qué pasa con el perro o gato CAPTCHA?

Tienes que decir cuál es un gato o un perro, las máquinas no pueden hacer esto.. http://research.microsoft.com/asirra /

Es genial..

 12
Author: José Leal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-13 13:41:46

Solo uso preguntas simples que cualquiera puede responder:

¿De qué color es el cielo?
¿De qué color es un naranja?
¿De qué color es la hierba?

Hace que alguien tenga que programar un bot personalizado para su sitio, lo que probablemente no valga la pena. Si lo hacen, cambia las preguntas.

 10
Author: tghw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-22 16:06:53

Personalmente no me gusta CAPTCHA perjudica la usabilidad y no resuelve el problema de seguridad de hacer que los usuarios válidos no sean válidos.

Prefiero métodos de detección de bots que pueda hacer del lado del servidor. Dado que tiene usuarios válidos (gracias a OpenID) puede bloquear a aquellos que no se "comportan", solo necesita identificar los patrones de un bot y compararlos con los patrones de un usuario típico y calcular la diferencia.

Davies, N., Mehdi, Q., Gough , N.: Creando y Visualizando una Inteligencia NPC usando Motores de Juego y Herramientas de IA http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06.pdf

Golle, P., Ducheneaut, N.: Evitar que los Bots Jueguen Juegos en Línea

Ducheneaut, N., Moore, R. : El Lado Social de los Juegos: Un Estudio de los Patrones de Interacción en un Juego Multijugador Masivo en Línea

Seguro que la mayoría de estas referencias apuntan a la detección de robots de videojuegos, pero eso es porque ese fue el tema del artículo de nuestro grupo titulado Robot Guerra: Una Exploración en el Juego de la Identificación de Robots . No fue publicado ni nada, solo algo para un proyecto escolar. Puedo enviar un correo electrónico si está interesado. El hecho es que incluso si se basa en la detección de bot de videojuegos, puede generalizarlo a la web porque hay un usuario conectado a patrones de uso.

Estoy de acuerdo con el método de MusiGenesis de este enfoque porque es lo que uso en mi sitio web y funciona decentemente bien. El proceso CAPTCHA invisible es un una forma decente de bloquear la mayoría de los scripts, pero eso aún no impide que un escritor de scripts realice ingeniería inversa a su método y "falsifique" los valores que está buscando en javascript.

Diré que el mejor método es 1) establecer un usuario para que pueda bloquear cuando son malos, 2) identificar un algoritmo que detecte patrones típicos vs.patrones no típicos de uso del sitio web y 3) bloquear a ese usuario en consecuencia.

 10
Author: jwendl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-07 16:50:30

Tengo algunas ideas sobre las que me gusta compartir con ustedes...

Primera idea para evitar OCR

Un captcha que tiene alguna parte oculta del usuario, pero la imagen completa son los dos códigos juntos, por lo que los programas OCR y las granjas captcha leen la imagen que incluye la parte visible y la oculta, intentan decodificar ambas y no envían... - Tengo todo listo arreglarlo y trabajar en línea.

Http://www.planethost.gr/IdeaWithHiddenPart.gif

Segunda idea para hacerlo más fácil

Una página con muchas palabras que el humano debe seleccionar la correcta. También he creado este, es simple. Las palabras son imágenes clicables, y el usuario debe hacer clic en la derecha.

Http://www.planethost.gr/ManyWords.gif

Tercera idea sin imágenes

Lo mismo que el anterior, pero con divs y textos o pequeños iconos. El usuario debe hacer clic solo en un div correcto/letra/imagen, lo que nunca.

Http://www.planethost.gr/ArrayFromDivs.gif

Idea final-Lo llamo CicleCaptcha

Y uno más mi CicleCaptcha, el usuario debe localizar un punto en una imagen. Si lo encuentra y hace clic en él, entonces es una persona, las máquinas probablemente fallan, o necesitan hacer un nuevo software para encontrar una manera con este.

Http://www.planethost.gr/CicleCaptcha.gif

Cualquier crítica es bienvenida.

 10
Author: Aristos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-20 00:27:41

Mejor captcha nunca! Tal vez necesites algo como esto para registrarte para mantener fuera a la riff-raff.

 9
Author: Chris Bartow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-21 12:16:40

Recientemente, comencé a agregar una etiqueta con el nombre y el id establecidos en "mensaje". Lo configuré en oculto con CSS (display:none). Los robots de spam lo ven, rellénalo y envía el formulario. Del lado del servidor, si el área de texto con el nombre de id está rellenado, marqué el mensaje como spam.

Otra técnica que estoy trabajando en ella al azar la generación de nombres e identificaciones, con algunos siendo cheques de spam y otros siendo campos regulares.

Esto funciona muy bien para mí, y aún no he recibido ningún spam exitoso. Sin embargo, consigo muchos menos visitantes a mis sitios:)

 7
Author: Brandon Wamboldt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-28 01:21:14

La aritmética muy simple es buena. Los ciegos podrán responder. (Pero como dijo Jarod, tenga cuidado con la precedencia del operador.) Deduzco que alguien podría escribir un analizador, pero hace que el spam sea más costoso.

Suficientemente simple, y no será difícil codificar alrededor de él. Veo dos amenazas aquí:

  1. los robots de spam aleatorios y los robots de spam humanos que podrían respaldarlos; y
  2. bots creados para desbordamiento de pila de juego

Con aritmética simple, podrías vencer a la amenaza # 1, pero no a la amenaza #2.

 6
Author: Josh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-19 16:18:38

¿Qué pasa si utilizas una combinación de las ideas captcha que tienes (elige cualquiera de ellas - o selecciona una de ellas al azar):

  • Texto ASCII captcha: //(_)//
  • rompecabezas de matemáticas: ¿qué es 7 menos 3 por 2?
  • preguntas de trivia: ¿qué sabe mejor, un sapo o una paleta?

Con la adición de colocar exactamente el mismo captcha en una sección oculta de css de la página - la idea honeypot. De esa manera, tendrías un lugar donde esperarías la respuesta correcta y otro donde la respuesta debe ser sin cambios.

 5
Author: TheEmirOfGroofunkistan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-25 19:42:20

He tenido resultados asombrosamente buenos con un simple campo" Deja este campo en blanco:". Los bots parecen llenar todo, particularmente si nombras el campo algo como "URL". Combinado con la comprobación estricta de referencia, todavía no he tenido un bot que lo supere.

Por favor, no se olvide de la accesibilidad aquí. Los captchas son notoriamente inutilizables para muchas personas que usan lectores de pantalla. Problemas de matemáticas simples, o trivialidades muy triviales (me gustó la pregunta de "qué color es el cielo") son mucho más amigable para los usuarios con problemas de visión.

 5
Author: Tina Marie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-09 17:36:51

Un texto simple suena genial. Sobornar a la comunidad para hacer el trabajo! Si usted cree, como yo, que los puntos de representante miden el compromiso de un usuario para ayudar al sitio a tener éxito, es completamente razonable ofrecer puntos de reputación para ayudar a proteger el sitio de los spammers.

Ofrece +10 de reputación por cada contribución de una pregunta simple y un conjunto de respuestas correctas. La pregunta debe estar convenientemente lejos (editar distancia) de todas las preguntas existentes, y la reputación (y la pregunta) debe desaparecer gradualmente si la gente no puede responder. Digamos que si la tasa de error en las respuestas correctas es más del 20%, entonces el remitente pierde un punto de reputación por respuesta incorrecta, hasta un máximo de 15. Así que si envías una mala pregunta, ahora obtienes +10 pero eventualmente obtendrás -5. O tal vez tenga sentido pedir a una muestra de usuarios que voten sobre si la pregunta de captcha es buena.

Finalmente, al igual que el daily rep cap, digamos que ningún usuario puede ganar más de 100 reputación mediante el envío de preguntas captcha. Esta es una restricción razonable en el peso dado a tales contribuciones, y también puede ayudar a evitar que los spammers sembren preguntas en el sistema. Por ejemplo, puedes elegir preguntas no con la misma probabilidad sino con una probabilidad proporcional a la reputación del remitente. Jon Skeet, por favor no envíe ninguna pregunta: -)

 5
Author: Norman Ramsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-07 22:09:01

Haga una consulta AJAX para un nonce criptográfico al servidor. El servidor devuelve una respuesta JSON que contiene el nonce, y también establece una cookie que contiene el valor nonce. Calcule el hash SHA1 del nonce en JavaScript, copie el valor en un campo oculto. Cuando el usuario publica el formulario, ahora envía la cookie de vuelta con el valor nonce. Calcule el hash SHA1 del nonce desde la cookie, compare con el valor en el campo oculto y verifique que generó ese nonce en el último 15 minutos (memcached es bueno para esto). Si todos esos cheques pasan, publica el comentario.

Esta técnica requiere que el spammer se siente y se da cuenta de lo que está pasando, y una vez que lo hacen, todavía tienen que disparar múltiples solicitudes y mantener el estado de la cookie para obtener un comentario. Además, solo ven el encabezado Set-Cookie si analizan y ejecutan el JavaScript en primer lugar y hacen la solicitud AJAX. Esto es mucho, mucho más trabajo que la mayoría de los spammers están dispuestos a pasar, especialmente porque el trabajo solo se aplica a un solo sitio. El mayor inconveniente es que cualquier persona con JavaScript desactivado o las cookies desactivadas se marca como spam potencial. Lo que significa que las colas de moderación siguen siendo una buena idea.

En teoría, esto podría calificarse como seguridad a través de la oscuridad, pero en la práctica, es excelente.

Nunca he visto a un spammer hacer el esfuerzo de romper esta técnica, aunque tal vez una vez cada par de meses recibo una entrada de spam sobre el tema ingresada a mano, y eso es un poco espeluznante.

 5
Author: Bob Aman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-21 22:35:48

1) Solucionadores humanos

Todas las soluciones mencionadas aquí son eludidas por el enfoque de solucionadores humanos. Un spambot profesional mantiene cientos de conexiones y cuando no puede resolver CAPTCHA por sí mismo, pasa la captura de pantalla a solucionadores humanos remotos.

Con frecuencia leo que los solucionadores humanos de CAPTCHAs violan las leyes. Bueno, esto está escrito por aquellos que no saben cómo funciona esta industria (spam).
Los solucionadores humanos no interactúan directamente con sitios que CAPTCHAs resuelven. Incluso no saben de qué sitios CAPTCHAs fueron tomados y enviados. Soy consciente de docenas (si no cientos) de compañías y/o sitios web que ofrecen servicios de solución humana, pero no una sola para la interacción directa con las placas que se rompen.
Estos últimos no infringen ninguna ley, por lo que la solución de CAPTCHA es completamente legal (y oficialmente registrada) empresas comerciales. No tienen intenciones criminales y podrían, por ejemplo, haber sido utilizados para pruebas a distancia, investigaciones, concepto pruebas, prototipado, etc.

2) Spam basado en contexto

Los bots de IA (Inteligencia artificial) determinan contextos y mantienen diálogos sensibles al contexto en diferentes momentos desde diferentes direcciones IP (de diferentes países). Incluso los autores de blogs con frecuencia no entienden que los comentarios son de bots. No voy a entrar en muchos detalles, pero, por ejemplo, los bots pueden webscrape diálogos humanos, los almacena en la base de datos y luego simplemente reutilizarlos (frase por frase), por lo que no son detectable como spam por software o incluso por humanos.

La respuesta más votada diciendo:

  • *"La teoría es que:
    • Un bot de spam no soportará JavaScript y enviará lo que vea
    • Si el bot admite JavaScript, enviará el formulario al instante
    • El comentarista ha leído al menos parte de la página antes de publicar" *

También honeypot respuesta y la mayoría de las respuestas en este hilo son simplemente mal.
Me atrevo a decir que son enfoques condenados a la víctima

La mayoría de los robots de spam funcionan a través de navegadores locales y remotos con javascript (parcheados y administrados) de diferentes IPs (de diferentes países) y son bastante inteligentes para eludir las trampas de miel y las ollas de miel.

El problema diferente es que incluso los propietarios de blogs no pueden detectar con frecuencia que los comentarios son de bot, ya que en realidad son de diálogos humanos y comentarios recolectados de otros tableros web (foros, comentarios de blog, etc)

3) Conceptualmente Nuevo Enfoque

Lo siento, he eliminado esta parte como precipitado uno

 5
Author: Gennady Vanin Геннадий Ванин,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:44

En realidad podría ser una idea tener un conjunto captcha relacionado con la programación. Por ejemplo:

Captcha

Existe la posibilidad de que alguien construya un comprobador de sintaxis para omitir esto, pero es mucho más trabajo omitir un captcha. Tienes la idea de tener un captcha relacionado sin embargo.

 5
Author: Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-29 18:05:51

Tengo que admitir que no tengo experiencia en la lucha contra los robots de spam y realmente no sé lo sofisticados que son. Dicho esto, no veo nada en el artículo de jQuery que no se pueda lograr puramente en el servidor.

Para reformular el resumen del artículo de jQuery:

  1. Al generar el formulario de contacto en el servidor ...
  2. Toma la hora actual.
  3. Combine esa marca de tiempo, más una palabra secreta, y genere un 'hash' de 32 caracteres y guárdelo como una cookie en el navegador del visitante.
  4. Almacena la marca de tiempo hash o 'token' en una etiqueta de formulario oculta.
  5. Cuando se devuelve el formulario, el valor de la marca de tiempo se comparará con el 'token' de 32 caracteres almacenado en la cookie.
  6. Si la información no coincide, o falta, o si la marca de tiempo es demasiado antigua, detenga la ejecución de la solicitud ...

Otra opción, si desea utilizar el CAPTCHA de imagen tradicional sin la sobrecarga de generarlos en cada solicitud es pre-generarlos sin conexión. A continuación, solo tiene que elegir al azar uno para mostrar con cada formulario.

 4
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-16 16:41:55