Viernes, 23 Septiembre 2011 06:04

Eliminar entradas masivas de spam en el gestor nativo de comentarios de K2

Escrito por 
CMS:  Joomla! |  Versión:  1.7 |  Nivel de dificultad:  Básico |  Tiempo estimado de lectura:  10 minutos


spam en el gestor nativo de comentarios de K2Decir que K2 es una gran extensión desarrollada por Joomlaworks, es una obviedad para quien ya ha trabajado con ella en Joomla! y gestiona sus artículos de contenidos u otros con este componente en sustitución del nativo de Joomla!.

Entre algunas de las funcionalidades que incorpora por defecto es la gestión de comentarios para los artículos publicados en K2, lo que evita tener que localizar en el JED e instalar un componente que se haga cargo de esta tarea.

Hasta aquí todo correcto sino fuese por un inconveniente que destaca a primera vista en el componente cuando se instala de forma nativa o a través de alguna plantilla utilizando su correspondiente "quickstart" -que no es otra cosa que un Joomla! pre-cocinado con todo lo necesario para que la plantilla funcione correctamente en nuestro sitio web sin tener que quebrarnos la cabeza con la instalación de la misma y sus extensiones, etc.- y es que habilita por defecto el sistema de comentarios sin protección de ningún tipo.

Que se instale el gestor de comentarios de K2 es lo propio, pero que lo haga sin la protección natural de un sistema de CATPCHA o reCAPTCHA es el comienzo de futuros problemas, y si le aplicamos un poco de matemáticas se acaba convirtiendo en un gran problema, sobre todo para usuarios que entienden por normal trabajar con "todo por defecto" pues convierten sus sitios webs en auténticos coladeros de spam, con la correspondiente carga de recursos al servidor y en un espacio de tiempo más o menos breve, el consumo de cuota de disco en planes de Hosting limitados (no existen los planes ilimitados de disco).

Aparentemente el problema tiene solución para quien no usa CAPTCHA o no sabe como activarlo, pues se logea en su backend y con la misma paciencia que le otorgaría el "Santo Job" se dispone a eliminar los mensajes de spam incorporados a sus artículos de K2 manualmente y todo solucionado ¡aparentemente! y aquí es donde entran en juego las matemáticas y más concretamente las reglas de 3 simples.

Tal como mostraremos en el vídeo que acompaña este artículo, y naturalmente dependiendo de la buena o peor suerte que tengamos de que nos toque un bot de spam con más ganas de trabajar que otros, podremos decir que la teoría de la infección de spam constante no exponencial, seria la siguiente para nuestro sitio web:

Si partimos de la base de que el "Sr. Bot Spam" que nos ha tocado trabaja a un ritmo de 14 mensajes inyectados cada 3 minutos en nuestro sistema de gestión de comentarios de K2 y como trabajador incansable que es (sin sindicato) trabaja 24 horas al día que traducido a minutos serian 1440 minutos, y aplicando dicha regla de 3 simple tenemos que en un día el "Sr. Bot Spam" habrá inyectado en dicho sistema de comentarios del orden de 6720 mensajes de enlaces, textos y porquerías múltiples sobre las que no habremos tenido ningún control.

En teoría la solución es sencilla, habilitar el sistema de reCAPTCHA que K2 incorpora en sus configuraciones, concretamente en el icono superior derecho "Preferencias" ítem "Comentarios" y generar las correspondientes llaves publica y privada para que funcione correctamente para nuestro sitio web y después llevar un control diario durante los primeros días tras la activación para asegurarnos que la medida de contención funciona.

Tras aplicación de esta medida para combatir el spam llega el momento de limpiar lo que ya ha entrado en nuestro sitio web por esta vía. Si hemos tenido suerte quizás todo el problema se reduzca a una o dos docenas de mensajes a eliminar, lo que podemos realizar desde el propio componente K2, Comentarios, seleccionando los mismos y eliminándolos, pero si como exponíamos anteriormente nuestro bot de spam se tomó el trabajo muy en serio y nosotros estuvimos fuera del trabajo todo el fin de semana es posible que para el lunes la cantidad de spam a eliminar ronde ya los 15000 mensajes o más, sin alarmismos que lo conviertan en una catástrofe malthusiana, y esto si es un verdadero trabajo para eliminarlos por el procedimiento anteriormente mencionado pues con facilidad nos enfrentamos a 100 páginas o más en K2, Comentarios, para eliminar los mismos y no recomiendo utilizar el filtro del paginador "Todos" porque lo máximo que conseguiremos es poner a trabajar en exceso al servidor donde nos alojamos, subiremos el load del mismo y posiblemente el navegador entre en estado de shock.

Para estos casos en los que la infección de spam es importante, superando con facilidad los 4000, 9000, etc., lo recomendable es eliminar estos registros en la propia base de datos utilizando para ello phpMyAdmin desde cPanel o el que use cada cual en su caso.


El procedimiento resumido seria el siguiente:

  • Accedemos a nuestro panel del Hosting (cPanel, Parallels® Plesk, etc).
  • Nos conectamos a phpMyAdmin.
  • Realizamos una copia de seguridad de la base de datos sobre la que vamos a intervenir (Exportar).
  • Seleccionamos la tabla jos_k2_comments (el prefijo "jos_" puede cambiar).
  • Pulsamos en "Examinar" para ver los registros (verificando que contiene los registros de spam).
  • En el menu superior de phpMyAdmin hacemos clic en "SQL"
  • Nos construye una consulta: SELECT * FROM `jos_k2_comments` WHERE 1
  • En los botones inferiores hacemos clic en DELETE y la consulta cambiará a: DELETE FROM `jos_k2_comments` WHERE 1
  • Clic en botón inferior derecho "Continuar"
  • !Listo! esto debería haber eliminado todos los registros de esta tabla.
  • Nos mostrará un mensaje en verde similar a: 9952 filas eliminadas. ( La consulta tardó 0.0282 seg ).
  • Lógicamente este procedimiento tienen un inconveniente ¿que pasa si ya teníamos /n mensajes "buenos" en nuestros artículos de K2 y no queremos perderlos?, la respuesta es más compleja y pasaría por trabajar en otra línea:

    • Exportar la tabla jos_k2_comments
    • Editar en local (PC) con editor de código y localizar los registros "buenos" y cribarlos de los malos (eliminarlos).
    • Con el resultado (registros válidos) y la tabla jos_k2_comment en phpMyAdmind vacía, importar el archivo .sql para que tomase los registros válidos únicamente.

    Explicado así es simple pero el proceso es algo más laborioso y se nos escapa un poco del objetivo de este artículo, pero no por ello seria imposible de realizar. En el vídeo siguiente documentamos el proceso y vemos en tiempo real como de afanados en el trabajo de inyectar spam puede llegar a ser los bots cuando se dan las condiciones adecuadas.



    Nuestro objetivo principal es tomar conciencia a través de este artículo de la importancia de utilizar CAPTCHA o mejor aún reCAPTCHA en nuestros formularios, de la naturaleza que sea, en Joomla! para evitar posteriormente tener que enfrentarnos a incomodas tareas como la aquí descrita, además porque el spam de una forma u otra contribuye a desprestigiar nuestro sitio web y acaba minando la confianza de nuestros visitantes.

    Es mucho más sencillo habilitar un sistema de protección CAPTCHA para los formularios de contacto, comentarios, etc., en Joomla! que aplicar soluciones para corregir el problema una vez afectados por este.



¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop



Luis Méndez Alejo

Miembro del equipo técnico de Webempresa.
Coordinador de contenidos en el Blog y en Youtube.
Google+