Ocultar la versión de WordPress para evitar ataques

WordPress revela su versión en el código fuente, headers HTTP, RSS y archivos CSS/JS, permitiendo a los atacantes identificar vulnerabilidades conocidas específicas de esa versión.

Ocultarla hace tu sitio menos atractivo para bots automatizados sin afectar su funcionamiento. Este tutorial muestra métodos sin plugins para eliminarla completamente de todas las ubicaciones.

 

#¿Por qué ocultar la versión de WordPress?

  • Aparece en meta generator, RSS feeds y parámetros ?ver= en CSS/JS
  • Hackers usan herramientas como WPScan para detectarla automáticamente
  • Reduce un 30-50% los escaneos automatizados según logs de seguridad

 

#Método 1: functions.php (Más completo – Recomendado)

Accede a Apariencia → Editor de temas → functions.php y añade al final:

text
// Ocultar versión de WordPress en todas partes
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_false');

// Quitar versión de CSS y JS
function quitar_version_wp($src) {
    if (strpos($src, '?ver=')) {
        $src = remove_query_arg('ver', $src);
    }
    return $src;
}
add_filter('style_loader_src', 'quitar_version_wp', 9999);
add_filter('script_loader_src', 'quitar_version_wp', 9999);

// Ocultar en footer admin
add_filter('update_footer', '__return_empty_string', 9999);

#Método 2: Bloqueo de archivos sensibles (.htaccess)

Añade en .htaccess en la raíz de WordPress:

text
# Bloquear readme.html y archivos que revelan versión
<Files readme.html>
Order Deny,Allow
Deny from all
</Files>

<FilesMatch "^.*(readme|license|changelog)\.txt?$">
Order Deny,Allow
Deny from all
</FilesMatch>

#Método 3: Headers HTTP con .htaccess (Apache)

text
# Remover headers que revelan versión WP
Header unset X-Powered-By
Header unset Link
Header always set X-Powered-By "NinjaServer/1.0"

#Método Nginx (Servidor alternativo)

text
# Bloquear archivos sensibles
location ~* /(readme|license|changelog)\.(html?|txt)$ {
    deny all;
    return 404;
}

# Remover headers WP
server_tokens off;
more_clear_headers Server;
more_clear_headers "X-Powered-By";

Recarga: sudo nginx -t && sudo systemctl reload nginx

#Verificar que funciona

  1. Ver código fuente → No debe aparecer «wp_generator» ni versión
  2. Visita tudominio.com/readme.html → Error 403/404
  3. En CSS/JS no debe haber ?ver=6.5.3
  4. Usa https://securityheaders.com → Sin info de versión WP

#¿Afecta a plugins o temas?

No. Solo oculta información pública. La app móvil, Jetpack y actualizaciones siguen funcionando normalmente. Haz backup antes de editar functions.php.