Pregunta

Parece que estaremos agregando CAPTCHA soporte para Stack Overflow.Esto es necesario para evitar bots, spammers y otras actividades maliciosas programadas.¡Solo queremos que 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, el CAPTCHA nunca será visible!

Sin embargo, para las personas con JavaScript deshabilitado, todavía necesitamos un respaldo y aquí es donde la cosa se vuelve complicada.

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

CaptchaImage

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

He visto cosas como...

  • Captcha de texto ASCII: \/\/(_)\/\/
  • acertijos matemáticos:¿Cuánto es 7 menos 3 por 2?
  • preguntas de trivia:¿Qué sabe mejor, un sapo o una paleta?

Tal vez solo estoy luchando contra molinos de viento aquí, pero me gustaría tener un sistema que requiera menos recursos y no esté basado en imágenes. <noscript> CAPTCHA compatible si es posible.

¿Ideas?

¿Fue útil?

Solución

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

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

Luego tengo un fragmento de JavaScript que actualiza el valor cada segundo con la cantidad de segundos durante los cuales se cargó 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 marco como spam.Si el valor antispam es un número entero, verifico si está por encima de 10 (segundos).Si es inferior a 10 lo marco 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 robot de spam no admitirá 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 comentarios

@MrAnalogía:El enfoque del lado del servidor parece una buena idea y es exactamente igual que hacerlo en JavaScript.Buena llamada.

@Ávido:Soy consciente de que este método es propenso a ataques directos, como mencioné en mi blog.Sin embargo, se defenderá contra el robot de spam promedio que envía basura ciegamente en cualquier forma que pueda encontrar.

Otros consejos

A menos que me esté perdiendo algo, ¿qué hay de malo en usar reCAPTCHA ya que todo el trabajo se realiza externamente.

Solo un pensamiento.

La ventaja de este enfoque es que, para la mayoría de las personas, ¡El CAPTCHA nunca será visible!

Me gusta esta idea, ¿no hay alguna manera de que podamos simplemente conectarnos al sistema de representantes?Quiero decir, cualquier persona con, digamos, +100 repeticiones probablemente sea un ser humano.Entonces, si tienen reputación, ni siquiera necesitas molestarte en hacer NADA en términos de CAPTCHA.

Luego, si no es así, envíelo. Estoy seguro de que no se necesitarán tantas publicaciones para llegar a 100 y la comunidad se sumergirá instantáneamente en cualquier persona que parezca estar enviando spam con etiquetas ofensivas. ¿Por qué no agregar un enlace "reportar spam"? ¿Eso reduce la modificación en 200?Consigue 3 de esos, logro de spambot desbloqueado, adiós;)

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

Que tal un captcha de miel?

Evite el Los peores CAPTCHA de todos los tiempos..

Las trivia están bien, pero tendrás que escribir cada una de ellas :-(

Alguien Habría que escribirlos.

Podrías hacer preguntas de trivia de la misma manera que ReCaptcha hace palabras impresas.Ofrece dos palabras, una de las cuales sabe la respuesta, otra de la que no; después de suficientes respuestas en la segunda, ahora también sabe la respuesta.Haga dos preguntas de trivia:

¿Una mujer necesita a un hombre como un pez necesita a un?

Naranja naranja naranja.Escriba verde.

Por supuesto, es posible que esto deba combinarse con otras técnicas, como temporizadores o secretos calculados.Sería necesario rotar/retirar las preguntas, por lo que para mantener el suministro de preguntas, podría agregar ad hoc:

Ingrese su pregunta obvia:

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

Ahora, para ralentizar a alguien que ejecuta un robot de juegos StackOverflow, rotaría las preguntas por dirección IP, de modo que la misma dirección IP no reciba la misma pregunta hasta que todo Las preguntas están agotadas.Esto ralentiza la creación de un diccionario de preguntas conocidas, lo que obliga al propietario humano de los bots a responder todas sus preguntas de trivia.

Vi esto una vez en el sitio de un amigo.Lo vende 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'   

CAPTCHA, en su conceptualización actual, no funciona y, a menudo, se pasa por alto fácilmente.NINGUNA de las soluciones existentes funciona eficazmente: GMail tiene éxito sólo el 20% de las veces, en el mejor de los casos.

En realidad, es mucho peor que eso, ya que esa estadística solo utiliza OCR y hay otras formas de evitarlo, por ejemplo, servidores proxy CAPTCHA y 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 brindar protección real de ninguna forma, puede ser suficiente para sus necesidades, si lo que desea es bloquear la basura que pasa ocasionalmente.Pero esto no detendrá ni siquiera a los spammers semiprofesionales.

Normalmente, para un sitio con recursos de algún valor que proteger, necesita un enfoque triple:

  • Limite las respuestas solo de usuarios autenticados, no permita publicaciones anónimas.
  • Minimice (no evite) las pocas publicaciones basura de usuarios autenticados, p.basado en la reputación.Un moderador humano también puede ayudar aquí, pero luego tienes otros problemas, es decir, inundar (o incluso ahogar) al moderador, y algunos sitios prefieren la apertura...
  • Utilice la lógica heurística del lado del servidor para identificar comportamientos similares a los del spam o, mejor aún, comportamientos no humanos.

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 (coste mínimo, pero sigue siendo un costo) para tener éxito en tal una pequeña cantidad de spam.

Una vez más, no todo su spam (y otra basura) se generará por computadora: al utilizar el proxy CAPTCHA o cultivar, los malos pueden hacer que personas reales le envíen spam.


El proxy CAPTCHA es cuando muestran su imagen a usuarios de otros sitios, p.porno, juegos, etc.

Una granja CAPTCHA tiene muchos trabajadores baratos (India, lejano oriente, etc) resolviendolos...normalmente entre 2 y 4 $ por 1000 captchas resueltos.Recientemente vi una publicación sobre esto en Ebay...

Entonces, Captcha es obligatorio para todos los usuarios, excepto los moderadores. [1]

Eso es increíblemente estúpido.Entonces habrá usuarios que puedan editar cualquier publicación en el sitio ¿Pero no publicar sin CAPTCHA?Si tienes suficiente representante para rechazar publicaciones, tienes 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 puedes emplear sin reconocimiento de imágenes, de modo que incluso para usuarios no registrados nunca sería necesario completar esos formularios CAPTCHA abandonados por Dios.

Asegúrate de que no sea algo Google puede responder aunque.Lo que también muestra un problema con ese orden de operaciones.

¿Qué tal si utilizamos la propia comunidad para comprobar que todos aquí son humanos, es decir,¿Algo así como una red de confianza?para encontrar uno realmente digno de confianza persona para iniciar la web sugiero usar este CAPTCHA para asegurarme de que es absoluta y 100% humano.

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

Ciertamente, existe una pequeña posibilidad de que esté demasiado ocupado preparando su discurso para la Medalla Fields para ayudarnos a construir la red de confianza, pero bueno...

Asira es el captcha más adorable jamás creado.

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 den cuenta, debería ser bastante fácil detectarlos.Siempre que un spammer detectado lo solicite, alterne entre los dos comandos siguientes:

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 utilizar eval para resolver el captcha en una línea de código.

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 Google CAPTCHA) pero debería engañar a la mayoría de los robots.

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 usa CSS para ocultarlos:

.hideme {
    display: none;
}

Al enviar, verifique si esos campos del formulario tienen algún dato, si fallan en la publicación del formulario.El razonamiento es que los robots leerán el HTML e intentarán completar todos los campos 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 puedes hacer para que esto sea menos explotable, pero este es sólo un concepto básico.

aunque todos nosotros debería Si sabe 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 simple cadena de texto con caracteres aleatorios resaltados en negrita o cursiva?El usuario solo necesita ingresar letras en negrita/cursiva como CAPTCHA.

P.ej. ssdfatwerweaJ hCtristekoghvefdhrffghlfgdhowfgh

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

Editar:Variaciones de ejemplo para abordar algunos de los problemas potenciales identificados con esta idea:

  • usando letras de colores aleatorios en lugar de negrita/cursiva.
  • usar una de cada dos letras rojas para el CAPTCHA (reduce la posibilidad de que los robots identifiquen letras con formatos diferentes para adivinar el CAPTCHA)

Aunque esto discusión similar empezó:

Estamos probando esta solución en una de nuestras aplicaciones que extraen datos con frecuencia:

Un mejor control de CAPTCHA (Mira mamá, ¡SIN IMAGEN!)

Puedes verlo en acción en nuestro Búsqueda de inspecciones de edificios.

Puede ver la fuente y ver que el CAPTCHA es solo HTML.

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

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

Es genial..

Sólo 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?

Esto hace que alguien tenga que programar un bot personalizado para su sitio, lo que probablemente no valga la pena.Si es así, simplemente cambia las preguntas.

Personalmente, no me gusta CAPTCHA, perjudica la usabilidad y no resuelve el problema de seguridad de invalidar a los usuarios válidos.

Prefiero métodos de detección de bots que puedas utilizar en el lado del servidor.Como tienes usuarios válidos (gracias a OpenID), puedes bloquear a aquellos que no se "comportan", sólo necesitas 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.:Evitar que los bots jueguen juegos en línea <-- Portal ACM

Ducheneaut, N., Moore, R.:El lado social de los juegos:Un estudio de patrones de interacción en un juego online multijugador masivo

Seguro que la mayoría de estas referencias apuntan a la detección de bots en videojuegos, pero eso se debe a que ese era el tema del artículo de nuestro grupo titulado Guerras de robots: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ás interesado.Sin embargo, el hecho es que incluso si se basa en la detección de bots de videojuegos, se puede generalizar a la web porque hay un usuario vinculado a patrones de uso.

Estoy de acuerdo con el método de MusiGenesis porque es lo que uso en mi sitio web y funciona bastante bien.El proceso CAPTCHA invisible es 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 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 puedas bloquearlo cuando sea malo, 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.

Tengo algunas ideas sobre eso que me gustaría compartir contigo...

Primera idea para evitar el OCR

Un captcha que tiene alguna parte oculta para el usuario, pero la imagen completa son los dos códigos juntos, por lo que los programas OCR y las granjas de captcha leen la imagen que incluye la parte visible y la oculta, intentan decodificarlas ambas y no pueden enviarlas. ..- Ya lo tengo todo listo para 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 en las que se puede hacer clic y el usuario debe hacer clic en la correcta.

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

Tercera Idea sin imágenes

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

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

Idea final: lo llamo CicleCaptcha

Y uno más mi CicloCaptcha, 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 crear un nuevo software para encontrar una manera de solucionarlo.

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

Cualquier crítica es bienvenida.

¡El mejor captcha de todos los tiempos! Tal vez necesites algo como esto para registrarte y mantener alejada a la chusma.

Recientemente, comencé a agregar una etiqueta con el nombre y la identificación establecidos en "mensaje".Lo configuré oculto con CSS (pantalla: ninguna).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 identificaciones aleatoriamente, algunos de los cuales son comprobaciones de spam y otros campos normales.

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

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

Es bastante simple y no será difícil codificarlo.Veo dos amenazas aquí:

  1. robots de spam aleatorios y robots de spam humanos que podrían respaldarlos;y
  2. Bots creados para el juego Stack Overflow.

Con aritmética simple, podrías vencer la amenaza número 1, pero no la amenaza número 2.

¿Qué pasaría si usaras una combinación de las ideas de captcha que tenías (elige cualquiera de ellas o selecciona una al azar):

  • Captcha de texto ASCII://(_)//
  • acertijos matemáticos:¿Cuánto 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 CSS de la página: la idea del honeypot.De esa manera, tendría un lugar donde esperaría la respuesta correcta y otro donde la respuesta no debería modificarse.

He obtenido resultados sorprendentemente buenos con un simple campo "Deje este campo en blanco:".Los bots parecen completar todo, especialmente si le asignas al campo un nombre como "URL".Combinado con una estricta verificación de referencias, ningún robot lo ha superado todavía.

No se olvide de la accesibilidad aquí.Los captchas son notoriamente inutilizables para muchas personas que usan lectores de pantalla.Los problemas matemáticos simples o las trivias muy triviales (me gustó la pregunta "de qué color es el cielo") son mucho más amigables para los usuarios con problemas de visión.

El texto simple suena genial. ¡Soborna a la comunidad para que haga el trabajo! Si cree, como yo, que los puntos de reputación de SO miden el compromiso de un usuario para ayudar a que el sitio tenga é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 sencilla y un conjunto de respuestas correctas.La pregunta debe estar adecuadamente alejada (distancia de edición) de todas las preguntas existentes, y la reputación (y la pregunta) debe desaparecer gradualmente si la gente no puede responderla.Digamos que si la tasa de fracaso en las respuestas correctas es superior al 20%, entonces el remitente pierde un punto de reputación por cada respuesta incorrecta, hasta un máximo de 15.Entonces, si envía una mala pregunta, obtendrá +10 ahora, pero eventualmente obtendrá -5.O tal vez tenga sentido pedirle a una muestra de usuarios que voten si la pregunta captcha es buena.

Finalmente, al igual que el límite de reputación diario, digamos que ningún usuario puede ganar más de 100 reputación enviando preguntas captcha.Esta es una restricción razonable en el peso otorgado a dichas contribuciones y también puede ayudar a evitar que los spammers introduzcan preguntas en el sistema.Por ejemplo, podría elegir preguntas no con la misma probabilidad, sino con una probabilidad proporcional a la reputación del remitente.Jon Skeet, no envíes ninguna pregunta :-)

Realice una consulta AJAX de 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 del 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 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 todas esas comprobaciones pasan, publique el comentario.

Esta técnica requiere que el spammer se siente y averigüe qué está pasando, y una vez que lo hace, aún tiene que enviar múltiples solicitudes y mantener el estado de la cookie para enviar un comentario.Además, sólo ven el Set-Cookie encabezado si analizan y ejecutan JavaScript en primer lugar y realizan la solicitud AJAX.Esto supone muchísimo más trabajo del que la mayoría de los spammers están dispuestos a realizar, especialmente porque el trabajo sólo se aplica a un único sitio.La mayor desventaja es que cualquier persona con JavaScript desactivado o 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 por 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 inquietante.

1) solucionadores humanos

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

Con frecuencia leo que los solucionadores humanos de CAPTCHA infringen las leyes.Bueno, esto lo escriben aquellos que no saben cómo funciona esta industria (spam).
Los solucionadores humanos no interactúan directamente con los sitios cuyos CAPTCHA resuelven.Ni siquiera saben de qué sitios se tomaron los CAPTCHA y los enviaron.Conozco docenas (si no cientos) de empresas o sitios web que ofrecen servicios de resolución humana, pero ni uno solo para la interacción directa con tableros rotos.
Estos últimos no infringen ninguna ley, por lo que la resolución de CAPTCHA es completamente legal (y oficialmente registrada) para empresas comerciales.No tienen intenciones criminales y podrían, por ejemplo, haberse utilizado para pruebas remotas, investigaciones, pruebas de conceptos, creación de prototipos, etc.

2) Spam basado en contexto

Los robots 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 a menudo no entienden que los comentarios provienen de robots.No entraré en muchos detalles pero, por ejemplo, los bots pueden extraer diálogos humanos de la web, almacenarlos en una base de datos y luego simplemente reutilizarlos (frase por frase), de modo que el software o incluso los humanos no los detecten como spam.

La respuesta más votada. narración:

  • *"La teoría es que:
    • Un robot de spam no admitirá 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 respuesta honeypot y la mayoría de las respuestas en este hilo son simplemente incorrectas.
Me atrevo a decir que lo son enfoques condenados a las víctimas

La mayoría de los spambots funcionan a través de navegadores locales y remotos compatibles con JavaScript (parcheados y administrados) desde diferentes IP (de diferentes países) y son bastante inteligentes para eludir las trampas y los tarros de miel.

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

3) Enfoque conceptualmente nuevo

Lo siento, eliminé esta parte por ser precipitada.

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

Captcha

Existe la posibilidad de que alguien cree un verificador de sintaxis para evitar esto, pero es mucho más trabajo evitar un captcha.Sin embargo, se te ocurre la idea de tener un captcha relacionado.

Debo admitir que no tengo experiencia en la lucha contra spambots y no sé realmente qué tan sofisticados son.Dicho esto, no veo nada en el artículo de jQuery que no se pueda lograr únicamente 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, genere un 'hash' de 32 caracteres y guárdelo como una cookie en el navegador del visitante.
  4. Almacene la marca de tiempo hash o 'token' en una etiqueta de formulario oculta.
  5. Cuando se devuelva 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, falta o si la marca de tiempo es demasiado antigua, detenga la ejecución de la solicitud...

Otra opción, si desea utilizar la imagen CAPTCHA tradicional sin la sobrecarga de generarla en cada solicitud, es generarla previamente sin conexión.Luego solo necesita elegir uno al azar para mostrar con cada formulario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top