Gravatar de Armonth

Filtrado rápido de trackbacks

Pensamiento e idea prematura, por lo que puede ocasionar algún problema (dudoso, pero ahí dejo eso). El sistema de “palabras prohibidas” de WordPress permite insertar una lista de palabras que en caso de existir en un comentario y/o trackback los mensajes sean eliminados.

Pero el caso es que pese a eliminar mucho spam con este método (los comentarios no son problema, pero los trackbacks todavía sí y uno se niega a capar una funcionalidad como ésa) siguen consumiendo recursos.

Supongo que, aunque no he llegado a pararme a mirarlo a fondo, es debido a todo el código que debe procesar antes de descartar el trackback.

La solución pasaría por implementar un filtro personalizado antes de todo esto, en el fichero wp-trackback.php justo antes de:

if ( is_single() || is_page() )
  $tb_id = $posts[0]->ID;

Habría que hacer un filtrado de palabras básico:

$title-and-excerpt = $title.$excerpt;

if ( eregi('ejemplo|medicina|guau',$title-and-excerpt) ) {
  die();
}

El ejemplo es muy simple, si en el nombre o el contenido del trackback se encuentran las palabras “ejemplo”, “medicina” o “guau” la petición termina ahí.

Las primeras pruebas realizados no pintan mal. Utilizando algo de profiling con APD el mismo trackback tarda la mitad en ser eliminado con este método que si se elimina utilizando las palabras prohibidas.

De todas formas me pregunto si no será mejor utilizar preg_match() en lugar de eregi() tal como ya hago con el sistema para mostrar publicidad.

De todas formas si para que una web vaya bien hay que ser eficiente en la optimización de recursos, uno no debe olvidarse de ser eficiente en sacar la basura…

4 Comentarios (feed)

  1. Gravatar de Manz Manz nos comenta:

    Si lo que quieres es un filtrado rápido y sobre todo eficiente prueba a:

    - Filtrar IP y rangos de IPs con máscaras: La mayoría de los ataques vienen de botnets y se pueden reducir mediante el bloqueo en .htaccess, por ejemplo. Si tienes acceso al firewall del servidor (como iptables) barájalo como primera opción.

    - Bloquear por palabras clave en el POST, request URI, referer…: Puedes utilizar el mod_security del apache. Si no recuerdo mal, en Dreamhost lo tienen activo por defecto.

    - Utilizar geolocalización para el bloqueo: La mayoría de los ataques suele llegar de sistemas desde China, Ucrania, Alemania,… (esto lo digo por experiencia!) Puedes utilizar esto y algunos otros criterios para bloquear accesos.

    Ten en cuenta que aunque consigas reducir vía PHP el impacto de los spammers en la base de datos (o registro del akismet), estos seguirán llegando y procesandose, creandose procesos (threads, o asignandose memoria y CPU procesando peticiones) y así consumiendo recursos en la máquina servidora.

    Viernes, 4 de Abril/2008 @ 4:18

  2. Gravatar de David Carrero Fdez-Baillo David Carrero Fdez-Baillo nos comenta:

    Lo voy a probar en messenger.es que es un sufrir el spam, aunque mas que trackback recibo comentarios.

    Viernes, 4 de Abril/2008 @ 14:00

  3. Gravatar de Lanselot Lanselot nos comenta:

    Mejor preg_match, es mucho más eficiente. Aunque con un patrón tan simple no sé si habrá diferencia.

    Viernes, 4 de Abril/2008 @ 18:59

  4. Gravatar de Samuel Samuel nos comenta:

    Has probado el plugin Simple trackback validation?.

    Hace dos comprobaciones (configurables):

    1. Que la ip que hace el trackback sea la misma que la ip que corresponde a la web que supuestamente nos está enlazando.

    2. Que la url que teóricamente está haciendo el trackback tenga en su contenido la url de nuestro artículo o de nuestro blog (configurable).

    Funciona bastante bien en casos de spam por trackback, y lo mejor de todo es que el spam no llega a pisar la base de datos.

    Lo que no sé es que tal andará en rendimiento, pero al menos en los blogs que lo tengo funcionando (con wp 2.3.3) no ha generado más que alegrías :)

    Viernes, 4 de Abril/2008 @ 20:58

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.