Parece que agregaremos compatibilidad con CAPTCHA a Stack Overflow. Esto es necesario para evitar bots, spammers y otras actividades maliciosas con script. ¡Solo queremos que los seres humanos publiquen o editen cosas aquí!
Usaremos un CAPTCHA de 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 las personas, ¡CAPTCHA nunca será visible!
Sin embargo, para las personas con JavaScript deshabilitado, aún necesitamos un respaldo y aquí es donde se vuelve complicado.
He escrito un control CAPTCHA tradicional para ASP.NET que podemos reutilizar.
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 ...
- Captura de texto ASCII:
\/\/(_)\/\/
- acertijos matemáticos: ¿qué es 7 menos 3 por 2?
- preguntas de trivia: ¿qué sabe mejor, un sapo o una paleta?
Tal vez solo estoy inclinando los molinos de viento aquí, pero me gustaría tener un <noscript>
CAPTCHA compatible con menos recursos y sin imágenes, si es posible.
Ideas?
fuente
Respuestas:
Un método que he desarrollado y que parece funcionar perfectamente (aunque probablemente no recibo tantos comentarios como spam) es tener un campo oculto y llenarlo con un valor falso, por ejemplo:
Luego tengo un fragmento de JavaScript que actualiza el valor cada segundo con la cantidad de segundos que se ha cargado la página:
Luego, cuando se envía el formulario, si el valor antispam sigue siendo "lalalala", lo marco como spam. Si el valor antispam es un entero, verifico si está por encima de algo así como 10 (segundos). Si está por debajo de 10, lo marco como spam, si es 10 o más, lo dejo pasar.
La teoría es que:
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 comentarios
@MrAnalogy: el enfoque del lado del servidor parece una buena idea y es exactamente lo mismo que hacerlo en JavaScript. Buena llamada.
@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 bot de spam promedio que envía basura a ciegas a cualquier forma que pueda encontrar.
fuente
Mi CAPTCHA favorito :
fuente
A menos que me falte algo, lo que está mal con el uso de reCAPTCHA ya que todo el trabajo se realiza externamente.
Solo un pensamiento.
fuente
Me gusta esta idea, ¿no hay forma de que podamos conectarnos al sistema de representación? Quiero decir, cualquiera que diga +100 rep es probable que sea un humano. Entonces, si tienen representante, ni siquiera tiene que molestarse en hacer NADA en términos de CAPTCHA.
Luego, si no lo están, envíelo, estoy seguro de que no se necesitarán tantas publicaciones para llegar a 100 y la comunidad se sumergirá instantáneamente en cualquiera que parezca estar enviando correo no deseado con etiquetas ofensivas, ¿por qué no agregar un enlace de "informe de correo no deseado"? que downmods por 200? Obtén 3 de esos, logro de spambot desbloqueado, adiós;)
EDITAR : También debería agregar, me gusta la idea matemática para CAPTCHA sin imagen. O tal vez una simple cosa tipo acertijo. Puede hacer que publicar sea aún más interesante ^ _ ^
fuente
¿Qué pasa con un captcha honeypot ?
fuente
Hey, if youre a human, keep this field blank!
Evita los peores CAPTCHA de todos los tiempos .
Alguien tendría que escribirlos.
Puede hacer preguntas de trivia de la misma manera que ReCaptcha hace palabras impresas. Ofrece dos palabras, una de las cuales sabe la respuesta, otra que no sabe: después de suficientes respuestas en la segunda, ahora también sabe la respuesta a eso. Haga dos preguntas de trivia:
Una mujer necesita un hombre como un pez necesita un?
Naranja Naranja Naranja. Escriba verde.
Por supuesto, esto puede necesitar combinarse con otras técnicas, como temporizadores o secretos computados. Las preguntas tendrían que rotarse / retirarse, por lo que para mantener el suministro de preguntas puede agregar ad hoc:
Ingrese su pregunta obvia:
Ni siquiera necesitas una respuesta; otros humanos lo descubrirán por ti. Es posible que deba permitir marcar preguntas como "demasiado difíciles", como esta: "asdf ejflf asl; jf ei; fil; asfas".
Ahora, para reducir la velocidad de alguien que está ejecutando un robot de juego StackOverflow, debe rotar las preguntas por dirección IP, por lo que la misma dirección IP no recibe la misma pregunta hasta que se agoten todas las preguntas. Esto ralentiza la construcción de un diccionario de preguntas conocidas, lo que obliga al propietario humano de los robots a responder todas sus preguntas de trivia.
fuente
Lo vi una vez en el sitio de un amigo. Lo está vendiendo por 20 dólares. ¡Es arte ASCII!
http://thephppro.com/products/captcha/
fuente
CAPTCHA, en su conceptualización actual, se rompe y a menudo se pasa por alto fácilmente. NINGUNA de las soluciones existentes funciona de manera efectiva: GMail solo tiene éxito el 20% del tiempo, 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, los proxies CAPTCHA y las granjas CAPTCHA. Recientemente di una charla sobre el tema en OWASP, pero el ppt aún no está en línea ...
Si bien CAPTCHA no puede proporcionar protección real de ninguna forma, puede ser suficiente para sus necesidades, si lo que desea es bloquear la basura informal. Pero no detendrá incluso a los spammers semi-profesionales.
Por lo general, para un sitio con recursos de cualquier valor para proteger, necesita un enfoque triple:
CAPTCHA puede ayudar un poquito con la segunda punta, simplemente porque cambia la economía: si las otras puntas están en su lugar, ya no vale la pena molestarse en romper el CAPTCHA (costo mínimo, pero aún un costo) para tener éxito en tal Una pequeña cantidad de spam.
Una vez más, no todo su correo basura (y otra basura) será generado por computadora: al usar el proxy CAPTCHA o la granja, los malos pueden tener personas reales que lo envíen.
El proxy CAPTCHA es cuando sirven su imagen a usuarios de otros sitios, por ejemplo, pornografía, juegos, etc.
Una granja CAPTCHA tiene muchos trabajadores baratos (India, lejano oriente, etc.) resolviéndolos ... típicamente entre 2-4 $ por 1000 captchas resueltas. Recientemente vi una publicación para esto en Ebay ...
fuente
Eso es increíblemente estúpido. Entonces, ¿habrá usuarios que puedan editar cualquier publicación en el sitio pero no publicar sin CAPTCHA? Si tiene suficiente representante para desestimar las publicaciones, tiene suficiente representante 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 imagen, por lo que incluso para usuarios no registrados nunca sería necesario completar esos formularios CAPTCHA abandonados por Dios.
fuente
Sin embargo, asegúrese de que no sea algo que Google pueda responder . Lo que también muestra un problema con eso: ¡orden de operaciones!
fuente
¿Qué pasa con el uso de la propia comunidad para verificar que todos aquí sean humanos, es decir, algo así como una red de confianza? Para encontrar una persona realmente confiable 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 preparando su discurso de Fields Medal para ayudarnos a construir la red de confianza, pero bueno ...
fuente
Asirra es el captcha más adorable de todos los tiempos.
fuente
Simplemente haga que el usuario resuelva expresiones aritméticas simples:
etc.
Una vez que los spammers se dan cuenta, debería ser bastante fácil detectarlos. Siempre que un spammer detectado solicite, alterne entre los siguientes dos comandos:
Obviamente, la razón por la que esto funciona es porque todos los spammers son lo suficientemente inteligentes como para usarlos
eval
para resolver el captcha en una línea de código.fuente
rm
contra la ejecución-rf /
.literal_eval
(o sus equivalentes en otros idiomas), lo cual es un hecho bastante triste.rm -rf ~
sería destructivo si el script se ejecuta en la máquina personal de alguienHe 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:
Luego usa CSS para ocultarlos:
Al enviar, verifique si esos campos de formulario tienen algún dato en ellos, si fallan la publicación del formulario. El razonamiento es que los bots leerán el HTML e intentarán completar cada campo del 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 puede hacer para que esto sea menos explotable, pero este es solo un concepto básico.
fuente
Aunque todos deberíamos saber matemáticas básicas, el acertijo matemático podría causar cierta confusión. En su ejemplo, estoy seguro de que algunas personas responderían con "8" en lugar de "1".
¿Sería adecuada una cadena simple de texto con caracteres aleatorios resaltados en negrita o cursiva? El usuario solo necesita ingresar las letras en negrita / cursiva como CAPTCHA.
Por ejemplo , sdfa t werwe a jh c sad k oghvefdhrffghlfgdhowfgh
En este caso "pila" sería el CAPTCHA. Obviamente, hay numerosas variaciones en esta idea.
Editar: variaciones de ejemplo para abordar algunos de los posibles problemas identificados con esta idea:
fuente
Aunque se inició esta discusión similar :
Estamos probando esta solución en una de nuestras aplicaciones frecuentemente extraídas de datos:
Un mejor control CAPTCHA (Look Ma - ¡NO HAY IMAGEN!)
Puede verlo en acción en nuestra Búsqueda de inspecciones de edificios .
Puede ver la Fuente y ver que CAPTCHA es solo HTML.
fuente
Sé que nadie leerá esto, pero ¿qué pasa con el perro o el gato CAPTCHA?
Debe decir cuál es un gato o un perro, las máquinas no pueden hacer esto ... http://research.microsoft.com/asirra/
Es genial ...
fuente
Solo uso preguntas simples que cualquiera puede responder:
De que color es el cielo?
De qué color es una naranja?
¿De qué color es la hierba?
Hace que alguien tenga que programar un bot personalizado en su sitio, lo que probablemente no valga la pena. Si lo hacen, simplemente cambia las preguntas.
fuente
Personalmente, no me gusta CAPTCHA, daña la usabilidad y no resuelve el problema de seguridad de invalidar a los usuarios válidos.
Prefiero los métodos de detección de bot que puedes hacer en el 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.: Creación y visualización de un NPC inteligente utilizando motores de juego y herramientas de inteligencia artificial http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06 .pdf
Golle, P., Ducheneaut, N.: Cómo evitar que los bots jueguen juegos en línea <- Portal ACM
Ducheneaut, N., Moore, R.: The Social Side of Gaming: A Study of Interaction Patterns in a Massively Multiplayer Online Game
Claro, la mayoría de estas referencias apuntan a la detección de bots de videojuegos, pero eso es porque ese fue el tema del artículo de nuestro grupo titulado Robot Wars: An In-Game Exploration of Robot Identification . 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 bots de videojuegos, puede generalizarlo a la web porque hay un usuario vinculado a los 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 bastante bien. El proceso invisible CAPTCHA es una forma decente de bloquear la mayoría de los scripts, pero eso no impide que un escritor de scripts realice ingeniería inversa en 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 frente a patrones no típicos de uso del sitio web y 3) bloquear a ese usuario en consecuencia.
fuente
Tengo algunas ideas sobre eso que me gustaría 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 de OCR y las granjas de captcha leen la imagen que incluye la parte visible y la oculta, intenta decodificarlos y no se envían. .. - Ya tengo todo listo para arreglar eso 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 correcta.
http://www.planethost.gr/ManyWords.gif
Tercera idea sin imágenes
Lo mismo que el anterior, pero con divs y textos o pequeños íconos. El usuario debe hacer clic solo en una div / letra / imagen correcta, lo que sea.
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 necesita hacer un nuevo software para encontrar una manera con este.
http://www.planethost.gr/CicleCaptcha.gif
Cualquier crítica es bienvenida.
fuente
¡El mejor captcha de todos! Tal vez necesites algo como esto para inscribirte para mantener alejado al riff-raff.
fuente
Recientemente, comencé a agregar una etiqueta con el nombre y la identificación establecidos en "mensaje". Lo configuré como oculto con CSS (pantalla: ninguno). Los robots de spam lo ven, lo completan y envían el formulario. Del lado del servidor, si se completa el área de texto con el nombre de identificación, marco la publicación como spam.
Otra técnica en la que estoy trabajando es generar nombres e identificadores aleatoriamente, algunos de ellos son comprobaciones de spam y otros son campos regulares.
Esto funciona muy bien para mí y aún no he recibido ningún correo no deseado exitoso. Sin embargo, recibo muchos menos visitantes a mis sitios :)
fuente
Suficientemente simple, y no será difícil codificarlo. Veo dos amenazas aquí:
Con la aritmética simple, puede vencer la amenaza n. ° 1, pero no la amenaza n. ° 2.
fuente
¿Qué sucede si usó una combinación de las ideas de captcha que tenía (elija cualquiera de ellas o seleccione una de ellas al azar):
con la adición de colocar exactamente el mismo captcha en una sección oculta css de la página: la idea honeypot. De esa manera, tendría un lugar donde esperaría la respuesta correcta y otro donde la respuesta no debería modificarse.
fuente
He tenido resultados asombrosamente buenos con un simple campo "Deje este campo en blanco:". Los bots parecen rellenar todo, especialmente si nombra el campo como "URL". Combinado con una estricta verificación de referencias, aún no he tenido un bot que lo haya superado.
No te olvides de la accesibilidad aquí. Las captchas son notoriamente inutilizables para muchas personas que usan lectores de pantalla. Los problemas matemáticos simples o las trivialidades muy triviales (me gustó la pregunta "de qué color es el cielo") son mucho más amigables para los usuarios con discapacidad visual.
fuente
El texto simple suena genial. ¡Soborna a la comunidad para que haga el trabajo! Si usted cree, como yo, que los puntos de representación SO 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.
Ofrezca +10 reputación por cada contribución de una pregunta simple y un conjunto de respuestas correctas. La pregunta debe estar adecuadamente lejos (editar la distancia) de todas las preguntas existentes, y la reputación (y la pregunta) debe desaparecer gradualmente si la gente no puede responderla. Supongamos que si la tasa de fracaso en las respuestas correctas es superior al 20%, el remitente pierde un punto de reputación por respuesta incorrecta, hasta un máximo de 15. Por lo tanto, si envía una pregunta incorrecta, obtiene +10 ahora, pero eventualmente lo hará. neto -5. O tal vez tenga sentido pedirle a una muestra de usuarios que vote si la pregunta captcha es buena.
Finalmente, al igual que el límite de repeticiones diarias, digamos que ningún usuario puede ganar más de 100 reputación enviando preguntas captcha. Esta es una restricción razonable sobre el peso dado a tales contribuciones, y también puede ayudar a evitar que los spammers envíen preguntas al sistema. Por ejemplo, podría elegir preguntas no con igual probabilidad sino con una probabilidad proporcional a la reputación del remitente. Jon Skeet, por favor no envíe ninguna pregunta :-)
fuente
Realice una consulta AJAX para un nonce criptográfico para el 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 envía el formulario, ahora envía la cookie con el valor nonce. Calcule el hash SHA1 del nonce de la cookie, compárelo con el valor en el campo oculto y verifique que generó ese nonce en los últimos 15 minutos (memcached es bueno para esto). Si pasan todos esos controles, publique el comentario.
Esta técnica requiere que el spammer se siente y descubra lo que está sucediendo, y una vez que lo hacen, todavía tienen que disparar múltiples solicitudes y mantener el estado de las cookies para obtener un comentario. Además, solo ven el
Set-Cookie
encabezado si analizan y ejecutan JavaScript en primer lugar y realizan la solicitud AJAX. Esto es mucho, mucho más trabajo del que la mayoría de los spammers están dispuestos a realizar, especialmente porque el trabajo solo se aplica a un solo sitio. El mayor inconveniente es que cualquier persona con JavaScript desactivado o cookies deshabilitadas 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 calificar 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 dos meses recibo una entrada de spam sobre el tema ingresada a mano, y eso es un poco extraño.
fuente
1) solucionadores humanos
Todas las soluciones mencionadas aquí son burladas por el enfoque de los 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 CAPTCHA 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 los sitios que CAPTCHA resuelven. Incluso no saben de qué sitios se tomaron CAPTCHA y se los enviaron. Soy consciente de docenas (si no cientos) de empresas y / o sitios web que ofrecen servicios de solucionadores humanos, pero no uno solo para la interacción directa con las juntas que se rompen.
Estos últimos no infringen ninguna ley, por lo que la resolución de CAPTCHA es una empresa comercial completamente legal (y registrada oficialmente). No tienen intenciones criminales y podrían, por ejemplo, haberse utilizado para pruebas remotas, investigaciones, pruebas de concepto, prototipos, etc.
2) Spam basado en contexto
Los robots AI (Artificial Intelligent) determinan los 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 romper los diálogos humanos, almacenarlos en la base de datos y luego simplemente reutilizarlos (frase por frase), para que el software o los humanos no los detecten como spam.
La respuesta más votada dice:
así como la respuesta honeypot y la mayoría de las respuestas en este hilo son simplemente incorrectas.
Me atrevo a decir que son enfoques condenados por las víctimas.
La mayoría de los spambots funcionan a través de navegadores locales y remotos con JavaScript (parcheados y administrados) de diferentes IP (de diferentes países) y son bastante inteligentes para sortear trampas de miel y 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 cosechados de otros paneles web (foros, comentarios de blog, etc.)
3) Enfoque conceptual nuevo
Lo siento, eliminé esta parte como precipitada
fuente
En realidad, podría ser una idea tener un conjunto de captcha relacionado con la programación. Por ejemplo:
Existe la posibilidad de que alguien construya un verificador de sintaxis para evitar esto, pero es mucho más trabajo evitar un captcha. Sin embargo, tienes la idea de tener un captcha relacionado.
fuente
$var == array(1 = 'one');;
")1
, no3
? (En serio. Intenta$var == array(1 => 'one');;
) ^ _ ~Tengo que admitir que no tengo experiencia peleando contra spambots y realmente no sé cuán sofisticados son. Dicho esto, no veo nada en el artículo de jQuery que no pueda lograrse únicamente en el servidor.
Para reformular el resumen del artículo de jQuery:
Otra opción, si desea utilizar la imagen tradicional CAPTCHA sin la sobrecarga de generarlas en cada solicitud, es generarlas previamente sin conexión. Entonces solo necesita elegir aleatoriamente uno para mostrar con cada formulario.
fuente