Los tackbacks y los pingbacks son sistemas de comunicación entre webs que permiten a los autores recibir notificaciones cuándo sus artículos han sido enlazados o mencionados en otros artículos. Es una tecnología totalmente integrada en WordPress aunque no exclusiva de esta plataforma. En este post aprenderemos que son exactamente los pingabacks y los trackbacks, como los puedes utilizar y como los puedes deshabilitar en WordPress si no los quieres.

¿Qué es un pingback?

El pingback es el sistema de comunicación automática entre dos webs cuándo una ha enlazado a la otra. El proceso general podría resumirse en estos pasos:

  1. Yo escribo un post en mi web.
  2. Tu escribes un post en tu web y enlazas a mi post.
  3. El software de tu web comunica a mi web que ha sido enlazada: nos envías un pingback. Técnicamente, esta comunicación consiste una solicitud XML-RPC.
  4. El sotware de mi web verifica el pingback: vuelve a tu web y verifica que el enlace a mi post existe.
  5. Como yo estoy utilizando WordPress, me llega una notificación y el pingback aparece en la cola de moderacion de comentarios. Si lo apruebo, el pingback aparecerá en los comentarios de mi post con un enlace a tu post dónde me habías enlazado. Otras plataformas pueden tratar los pingbacks de forma diferente.

No nos podemos olvidar de los self-ping, esto es, pingbacks entre artículos de un mismo sitio. Si enlazas un post de tu misma web recibirás igualmente el pingback, lo que puede ser un poco molesto. Si quieres deshabilitar los sefl-ping en WordPress puedes utilizar este código (no es necesario si deshabilitas los pingbacks y trackbacks completamente como veremos más adelante):

add_action( 'pre_ping', function ( $links ) {

  $home = get_home_url();

  foreach ( $links as $l => $link ) {

    if ( 0 === strpos( $link, $home ) ) {

      unset($links[$l]);

    }

  }
} );

¿Qué es un trackback?

Bueno, pues es exactamente igual que el pingback pero es un proceso manual y más antiguo que los pingbacks. Para utilizar los tracbacks tienes que conocer la URL de trackback del sitio al que enlazas. En WordPress estas URLs son la URL del post más /trackback al final.

Si tienes los trackbacks activos, mientras escribes un post verás un meta box de título “Enviar trackbacks”. Introduces ahí las URLs de trackback a las que quieres enviar la notificación (se pueden poner varias separadas por coma). Al publicar el post, WordPress intentará comunicarse con esos sitios y enviarles el trackback:

Enviar trackbacks en WordPress
Enviar trackbacks en WordPress

Desactivar los trackbacks y pingbacks en WordPress

Los trackbacks, y en menor medida los pingbacks, son fuente frecuente de SPAM. Si no queremos basura en nuestra web tenemos que prestarle atención y dedicarle un poco de tiempo a su moderación.

En mi experiencia el SPAM ha sido demasiado alto y la utilidad del pingback demasiado baja como para dedicarle un mínimo de tiempo así que los tengo desactivados. En la administración de WordPress, ve a Ajustes > Comentarios y desmarca la casilla “Permitir notificaciones de enlace desde otros sitios”:

Deshabilitar pingbacks en WordPress
Deshabilitar pingbacks en WordPress

Si quieres puedes dejar marcada la casilla “Tratar de avisar a los sitios enlazados …” para que WordPress intente avisar a los sitios que enlazas desde tus artículos. Esto permite que los autores de las webs que enlazas puedan conocerte, aunque deberán tener activados los pingbacks.

Desactivar los pingbacks en post antiguos

Desactivar los pingbacks en la configuración de WordPress no tiene efecto sobre posts publicados con anterioridad. Para hacer una desactivación masiva en todos los posts existentes puedes ejecutar la siguiente consulta a la base de datos:

UPDATE wp_posts SET ping_status='closed' WHERE post_status = 'publish';

Seguridad y pingbakcs en WordPress

El API XML-RPC de WordPress, utilizado para los trackbacks y pingbacks, ha tenido varios bugs de seguridad que se han ido solucionando pero que han sembrado muchas dudas. Actualmente el principal riesgo de los pingbacks es la posibilidad de utilizarlos en un ataque DDoS, tanto para atacar tu propia web como a una web de terceros pero utilizando los pingbacks de tu sitio como herramienta y sin que tu notes nada!!. Todos los detalles técnicos, si te interesan, puedes verlos en este análisis de la vulnerabilidad XML-RPC de WordPress que hacen el Blog de SpiderLabs (en inglés).

Que ataquen a tu web con los pingbacks sería algo parecido a un ataque DDoS por solictudes masivas similar al que se puede hacer a cualquier web dinámica. Por ejemplo, solicitar una página que realiza consultas a una base de datos una y otra vez hasta que reviente. Difícil solución a nivel de aplicación, sería más bien algo contra lo que luchar a nivel de servidor.

Pero que los atacantes puedan utilizar tu web para atacar a un tercero si es algo que a nivel de aplicación se puede y se debe solucionar (desconozco si ya ha sido solucionado, investigo el tema).

Según explican en SpiderLabs, incluso con los pingbacks desactivados WordPress puede realizar solicitudes pingback a un tercero y tu web puede ser utilizada para atacarle. Se supone que fue algo solucionado en WP 3.5.1, pero por lo visto no del todo. Para evitar que tu web participe en estos ataques puedes desactivar las solicitudes pingback.ping del API XML-RPC con el siguiente filtro:

add_filter( 'xmlrpc_methods', function( $methods ) {
    unset( $methods['pingback.ping'] );
    return $methods;
} );

Hay quién recomienda desactivar el API XML-RPC al completo siempre, también hay quién opina que los pingbacks deberían ser totalmente eliminados del core por su poco uso y el API XML-RPC abandonado en favor del REST API (aunque no son verdaderamente comparables).

Pero hoy por hoy todavía hay plugins y aplicaciones de amplio uso que se basan en el API XML-RPC, por ejemplo JetPack, las aplicaciones oficiales de WordPress para Android e iOS o la mayoría de clientes Weblog. A ver hacia dónde nos lleva el futuro, casi con total seguridad al REST API.