Libro de Visitas Vs Spam

Escrito por Darío Blanco el 15-11-09

Todo sitio que valore lo que piensen sus usuarios tiene un formulario de comentarios, o un libro de visitas.

Este formulario es aprovechado por robots que dejan comentarios en nuestro libro, con el objetivo de dar a conocer  los productos que venden, llamese V-I-A-G-R-A o relojes R-O-L-E-X o cualquier otra cosa. Convengamos que es un sistema barato de hacer publicidad a nivel global, ya que nuestra página se indexará y los links que agregan en sus comentarios estarán disponibles así en cantidades monstruosas en la red. Esto es SPAM.

Además de lo molesto que es encontrar un mensaje real entre 1000 spam, el riesgo que corremos es que nuestro hosting nos suspenda la cuenta, hasta pueden llegar a cancelarla.  Veamos un caso real, el de este mismo sitio.

Dia 1: Después de mucho tiempo de no postear en el sitio me pongo a ver la cantidad de comentarios. En un solo post, hay 1250 spam.

Solución: Decido agregar un captcha; uno de esas palabras formadas aleatoriamente que el usuario debe tipear para poder dejar un mensaje, tambièn usada para registrarse en los sitios. El captcha es generado como gráfico, así será imposible de descifrar por un robot. Agrego una rutina de captcha, borro todos los comentarios del sitio y me voy a dormir tranquilo.

Día 2: Entro al sitio para ver qué hay, me encuentro con casi 10 comentarios iguales al anterior. Deduzco que los robots son más inteligentes de lo que pensaba. Utilizan OCR para analizar el gráfico, encontrar los caracteres...y meter de todos modos su publicidad.

Solución: Mejoro el captcha. En vez de mostrar una cadena de caracteres para repetir muestro un captcha lógico, en el que aparezca una operación que el usuario humano pueda descifrar y un robot nó. La idea la tomé de aquí. Limpio los comentarios y espero...

Día 3: Entro al sitio para ver qué hay. Todavía me encuentro con 3 o 4 spam. Tengo que mejorar aún más.

Solución: El captcha es verificado en el cliente con JavaScript, luego el comentario es agregado solo si se cumplen estas condiciones:

1- El captcha debe ser igual al que está en sesiòn

2- El $_SERVER['HTTP_REFERER'] debe corresponder al mismo sitio

3- El session_id() debe corresponder al que traje del formulario a través de un campo hidden.

hasta ahora es la solución definitiva, porque no hubo más spam.

Código fuente: Contiene todos los archivos necesarios para que puedas poner un control antispam por captcha en tu sitio.