Ocultar la versión de WordPress

Última revisión: 2 de octubre de 2021

El primer punto de inicio a la hora de atacar un WordPress es saber qué versión está utilizando. La versión de WordPress está bastante disponible, ya que forma parte del código del sitio, por lo que hay que ocultarla de varias formas en varios lugares.

ReadMe

El principal fichero donde encontrar la versión de WordPress no se encuentra en el código, sino en el fichero readme.html en la propia instalación del software. Es por esto que una de las primeras cosas que debemos hacer para ocultar la versión que aparece en este fichero es dejarlo inaccesible.

Una primera opción, si usas un servidor Linux, es quitarle los permisos al fichero, ejecutando:

chmod 000 readme.html

Aunque siempre existe la opción de devolver un código de inaccesibilidad desde Apache HTTPD (dentro del fichero .htaccess):

<Files readme.html>
  Deny from all
</Files>

Y de la misma manera podríamos bloquearlo desde nginx:

En nginx (dentro del fichero de configuración del sitio). En este caso vamos a ser más agresivos y a bloquear todos los del sitio, ya sean HTML o TXT.

location ~* readme.(html|txt) {
  deny all;
}

Meta-Información

En las plantillas habitualmente encontraremos el meta-generator que incluye la versión que tienes instalada. Este código se encuentra en la cabecera de tu sitio:

<meta name="generator" content="WordPress 1.2.3">

Para eliminar este código (y el de otros plugins que también lo utilicen) podemos aplicar este código en el fichero de [functions.php] de nuestra plantilla. Otra opción es mediante el sistema explicado en la sección de Cabeceras inconvenientes.

remove_action('wp_head', 'wp_generator');

Pero no solo en la plantilla aparece este código, sino también en otros elementos xomo XML, feeds, RSS, etcétera. Para ello también aplicaremos otro filtro.

add_filter('the_generator', '__return_false');

Versión en CSS y Javascript

De la misma manera que nos encontramos la versión de WordPress en las meta-etiquetas, también la solemos encontrar en las etiquetas de CSS y JavaScript del sitio, normalmente en el parámetro [&ver=1.2.3]. Esta versión que aparece es la propia del WordPress, por lo que aunque eliminemos la versión de la meta-información, nos queda ocultar las versiones de estos elementos.

function wpdanger_remove_ver($src, $handle) {
  $handles = ['style','script'];
  if(strpos($src, 'ver=') && !in_array($handle, $handles, true))
    $src = remove_query_arg('ver', $src);
  return $src;
}
add_filter('style_loader_src', 'wpdanger_remove_ver', 9999, 2);
add_filter('script_loader_src', 'wpdanger_remove_ver', 9999, 2);

Instrucciones paso a paso

  1. Crea el plugin o descárgalo ya creado (descomprime el fichero ZIP).
  2. Accede por FTP a la carpeta [/wp-content/mu-plugins/]. Si no tienes esta carpeta, créala.
  3. Sube por FTP el fichero [wpdanger-ver.php] a la carpeta [/wp-content/mu-plugins/].
  4. Cuando entres en el panel de administración de tu WordPress, en la zona de Plugins tendrás una sección nueva de plugins Imprescindibles donde aparecerá. Recuerda que al ser Imprescindible no podrás activarlo ni desactivarlo.

Un método alternativo a este, es usar algunas funciones propias de WordPress:

function wpdanger_remove_ver( $src ) {
  if( strpos( $src, '?ver=' ) )
  $src = remove_query_arg( 'ver', $src );
  return $src;
}
add_filter( 'style_loader_src', 'wpdanger_remove_ver', 10, 2 );
add_filter( 'script_loader_src', 'wpdanger_remove_ver', 10, 2 );

Seguir con Seguridad para WordPress


Sobre este documento

Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.