Cómo detuve el spam de comentarios de WordPress -

Me encanta casi cada parte de ser un blogger de tecnología: aprender, predicar, bromear, investigar. La única parte de los blogs que detesto absolutamente: lidiar con comentarios SPAM. Durante los últimos dos años, mi blog ha registrado más de 8000 comentarios SPAM por día. POR DÍA . Inflar mi base de datos con esa basura ralentiza mi blog en todos los sentidos, y recientemente decidí que ya había terminado. También estaba cansado de moderar comentarios y ver un montón de notificaciones de comentarios SPAM en mi bandeja de entrada de correo electrónico. Hecho. Y como un jefe… lo detuve. Muerto. ¡Así es como lo hice!

Índice de contenidos
  1. Cómo me enviaban spam
  2. Lo que no funcionó
  3. Lo que funcionó
  4. Cómo implementé la protección contra spam
  5. El PHP de WordPress
  6. El JavaScript
  7. VICTORIOSO

Cómo me enviaban spam

No hay forma de saberlo, pero sospecho que los bots detectaron que tenía un blog de WordPress, conocían las claves del formulario para enviar comentarios y lo hicieron en consecuencia. Recibí comentarios sobre Viagra, Cialis, MichaelKors, zapatos Nike y más. Cosas en las que sólo los robots dedicarían su tiempo. Todo tenía que ser un ataque automatizado y detectado, sin ningún objetivo.

Lo que no funcionó

Todo. Había usado diferentes complementos de WordPress y seguía recibiendo SPAM. Akismet es el principal protector de SPAM de WordPress y no pudo evitar los problemas e incluyó más de 100 KB de JavaScript que ralentizó mi sitio. Nunca utilicé una utilidad CAPTCHA porque cualquier barrera para comentar en mi sitio debería ser un problema con el que me ocupo yo, no todos ustedes. Al final, numerosas utilidades me decepcionaron. Me sentí decepcionado pero me negué a ceder.

Lo que funcionó

El primer paso fue eliminar todos los complementos antispam, ya que era muy probable que se estuvieran metiendo entre sí y dejando entrar el SPAM. Mi solución fue permitir la solución antispam genérica: agregar una ENTRADA al formulario que debería permanecer vacío durante el proceso de envío. Vacío en valor pero presente a través de clave: la premisa es que los robots que leen las entradas del formulario rellenarían los valores de los campos del formulario con basura solo para asegurarse de que los envíos no fueran rechazados en función de valores vacíos.

Cómo implementé la protección contra spam

No puede simplemente agregar entradas en el lado del servidor: se envían a la página y el bot puede leerlas y completarlas (o no completarlas). La creación de esos campos en el lado del cliente elimina los simples lectores bot/curl . Puede agregar dichos campos de formulario con JavaScript (a través de cualquier marco) y esa es su mejor opción. Sin embargo, antes de hacer eso, implementemos la verificación del bloqueo de SPAM del lado del servidor.

El PHP de WordPress

Antes de aceptar un comentario en el lado del servidor, debemos verificar la presencia de la clave dinámica. Todo lo que necesitamos es una verificación de isset:

// Que se jodan los spammersfunction preprocess_new_comment($commentdata) {if(!isset($_POST['is_legit'])) {die('Eres una mierda');}return $commentdata;}if(function_exists('add_action')) {add_action('preprocess_comment', 'preprocess_new_comment');}

Si la verificación falla, rechazamos el comentario. Por supuesto, esto significa que los comentarios de los usuarios sin soporte de JavaScript serán rechazados, pero la posibilidad de recibir spam es probablemente mayor que la de los usuarios sin soporte de JS, así que estoy de acuerdo con eso. Si la clave no está establecida, rechazamos rotundamente el comentario por completo. Esta es una oportunidad, por supuesto, pero las estadísticas muestran que vale la pena.

El JavaScript

La respuesta fácil aquí es usar JavaScript básico para inyectar el campo del formulario y, dado que cada marco JS tiene su propia sintaxis, dejaré de proporcionar código para todos ellos. Agregar dicho campo al cargar la página me parece un poco sospechoso, ya que un robot inteligente puede detectarlo. En el caso de mi blog, uso MooTools y envío comentarios a través de AJAX, por lo que simplemente agrego el campo secreto dentro del código JavaScript al enviarlo:

var form = $('formulario de comentario');new Request({ url: form.action, método: 'post', onRequest: function() {}, onSuccess: function(content) {}, onComplete: function() {}}).send(form.toQueryString() + 'is_legit=1');

Agregar esa clave al enviarla ha demostrado ser seguro hasta este punto.

VICTORIOSO

Después de dos semanas he recibido 0 comentarios SPAM. Cero. Ninguno. Nulo. Cremallera absoluta. Pasé de más de 8.000 por día a ninguno. Mejor que Akismet, mejor que cualquier complemento. Tome la prevención de SPAM de WordPress en sus propias manos: ¡use la magia del lado del cliente con una pequeña función PHP para hacer su vida más fácil!

Te podría interesar...

Deja una respuesta

Subir