Por si no lo sabías, tanto WordPress como muchos plugins, e incluso posiblemente tu tema activo, realizan constantemente peticiones HTTP externas, a sus servidores, para múltiples y diversos objetivos.
Por ejemplo, WordPress comprueba con frecuencia si hay actualizaciones de WordPress, plugins, temas o traducciones, conectando con https://api.wordpress.org
. Los plugins de seguridad realizan comprobaciones de tu sitio frente a sus bases de datos de listas negras y contraseñas inseguras, otros plugins comprueban qué tipo de licencia tienes, qué versión estás usando, o incluso recopilan información de tu instalación, y también los temas en ocasiones hacen este tipo de consultas.
¿Sabes lo peor de todo?, que casi nunca te piden permiso, lo hacen en segundo plano, sin avisarte, ni darte la opción de decidir si quieres que suceda ese tipo de telemetría, sin control alguno por tu parte.
¿Qué problema hay con las peticiones HTTP externas?
Estas peticiones HTTP externas tienen todo tipo de posibles implicaciones para ti y tu web, incluso para tus visitantes…
- Si estás haciendo desarrollo local ralentizan tu trabajo con peticiones que no se van a poder completar, si estás desconectado.
- Ralentizan la gestión administrativa de tu web, al estar produciéndose consultas en segundo plano, que consumen recursos.
- En consecuencia, consumen recursos adicionales de tu servidor, que en gran parte no aportan nada a tu web.
- Ralentizan la carga de tus páginas.
- Recopilan datos en servidores externos, que no puedes gestionar y, en consecuencia, no puedes garantizar la privacidad de tus usuarios, impidiéndote cumplir el RGPD y regulaciones de privacidad.
- Casi nunca informan de esta recopilación de datos, ni de su uso, almacenamiento, etc., en sus políticas de privacidad, ni te avisan al instalar el plugin, tema, etc.
Cómo impedir la telemetría de consultas HTTP externas en WordPress
Si tienes claro que no quieres que este tipo de peticiones ocurran en tu web sin tu consentimiento, o al menos sin tu conocimiento, hay varias maneras de controlarlas.
Vigila las peticiones HTTP externas
El primer paso es saber qué está pasando, qué tipo de telemetría ocurre en segundo plano en nuestra web, qué peticiones HTTP externas se están realizando en nuestro WordPress.
Para ello nos podemos ayudar del plugin Log HTTP Requests.
Este plugin tiene una sola utilidad, y es registrar todas las peticiones HTTP externas que suceden en tu web, así como las solicitudes de admin AJAX, y mostrártelas en la página Herramientas → Log HTTP Requests. No ofrece ningún método para impedir estas peticiones pero sí te da el conocimiento que necesitas para poder actuar en consecuencia.
Vigilar y bloquear archivos y servidores que realicen peticiones HTTP externas en WordPress
Para dar un paso más, para no solo monitorizar las conexiones salientes, sino también poder bloquear a voluntad aquellas que no queramos, tenemos Snitch.
Este plugin, aunque hace tiempo que no se actualiza, permite vigilar y regular todo el tráfico de datos saliente de tu web, y funciona perfectamente.
Desde su menú (Snitch) puedes ver todas las conexiones salientes que ocurren en WordPress, pero con el plus de que al pasar el cursor sobre cualquier de ellas, se mostrarán unos enlaces desde los que podrás bloquear:
- El archivo que realiza la conexión saliente.
- El servidor a dónde va dirigida la petición.
Lo único que no me gusta de este plugin es que también registra, por defecto, todas las llamadas del cron de WordPress, pero puedes evitar que lo haga añadiendo al archivo wp-config.php
la siguiente constante:
define('SNITCH_IGNORE_INTERNAL_REQUESTS', true);
Guarda los cambios y Snitch dejará de vigilar todas las peticiones internas, no solo el cron, y se centrará únicamente en mostrar las externas.
Bloquear todas las peticiones HTTP externas (telemetría) de WordPress
Para finalizar, si no tienes tiempo, ganas ni conocimiento como para andar revisando registros de telemetría, ni para decidir qué sale y qué no, puedes sacar la artillería pesada y bloquear todas las peticiones HTTP externas, todas las consultas salientes de tu WordPress.
Hay 3 maneras de conseguirlo…
Con un plugin
Si eres de plugins (yo también) tienes el veterano Disable Telemetry, cuya única funcionalidad, que no es poco, es desactivar cualquier tipo de petición HTTP externa a la API de WordPress, usando la función siguiente:
add_action( 'pre_http_request', __NAMESPACE__ . '\\disable_telemetry_init', 1, 3 ); function disable_telemetry_init( $short, $args, $url ) { return ( false !== stripos( $url, 'api.wordpress.org' ) ); }
¿Funciona?, perfectamente, ¿es suficiente?, tampoco.
Tiene 2 grandes defectos, y el primero es ese, que solo sirve para la telemetría de WordPress, la que revisa actualizaciones y otras funcionalidades. El segundo defecto es que no se actualiza hace mucho, y para algo tan relevante, y el poco código que requiere, pues ¿qué quieres que te diga?, que mejor no depender de él.
Si quieres algo más completo, el mismo desarrollador tiene otro plugin en GitHub, Airplane Mode, que además de la telemetría de WordPress también impide otras peticiones HTTP de plugins tan populares como Jetpack, BuddyPress y otros, además de impedir la comprobación de actualizaciones.
Con una función
Como te decía antes, ya puestos, nosotros mismos podemos añadir una función que impida la telemetría, añadiendo estas líneas a nuestro archivo functions.php
del tema activo, o con cualquier otro método de nuestra elección:
add_filter( 'pre_http_request', '__return_true', 100 );
Es solo una línea y hace el trabajo, aunque …
La verdad es que lo hace demasiado bien, y también impide que funcione el cron de WordPress, y no queremos eso ¿verdad?
La constante 007
El mejor método de impedir peticiones HTTP externas de WordPress, esos espías que trabajan sin que te enteres, que aúne eficacia y control es añadiendo unas líneas al archivo wp-config.php
, como en este ejemplo:
/* Bloquear todas las solicitudes HTTP externas */ define( 'WP_HTTP_BLOCK_EXTERNAL', TRUE ); /* Dominios no bloqueados por la constante anterior */ define( 'WP_ACCESSIBLE_HOSTS', 'dominio1.com, dominio2.com' );
Con la primera línea se bloquean todas las peticiones HTTP externas, y solo las externas, sin impedir el funcionamiento normal del cron de WordPress, y en la segunda podemos añadir una serie de servidores a los que sí permitiremos realizar telemetría, peticiones HTTP externas.
Espero que esta guía te haya sido de utilidad, tanto para conocer algo más sobre tu web WordPress y todo lo que pasa en la sala de máquinas, como para aprender a tener el control total de lo que se mueve en nuestra instalación.
PUEDE QUE TAMBIÉN TE INTERESE…
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!