Kodflux
Kodflux
Crear cuenta gratisIniciar Sesión

PHP / Basico / 3 min

Deshabilitar XML-RPC en WordPress

Snippet PHP para functions.php que bloquea XML-RPC, oculta fingerprints y endurece wp-login.

XML-RPC es una API legada de WordPress que muchos ataques de fuerza bruta siguen usando, especialmente a través de system.multicall.

Este snippet deshabilita XML-RPC, reduce fingerprinting de versión, bloquea el editor de archivos del dashboard, ajusta Heartbeat API y limita revisiones sin instalar plugins pesados.

Guía de Implementación Paso a Paso

  1. Haz backup de functions.php antes de editar.
  2. Agrega el código en el functions.php del child theme o, mejor, como snippet PHP en WPCode.
  3. Activa el snippet y limpia caché.
  4. Verifica que XML-RPC esté bloqueado con curl.
BASH
curl -X POST https://tusitio.com/xmlrpc.php \
  -H "Content-Type: text/xml" \
  -d '<?xml version="1.0"?><methodCall><methodName>system.listMethods</methodName></methodCall>'
PHP
<?php
/**
 * KODFLUX - WordPress Security Hardening
 * Bloquea XML-RPC y asegura wp-login.php.
 * Agregar en functions.php del child theme o vía WPCode.
 */

// 1. Deshabilitar XML-RPC completamente.
add_filter( 'xmlrpc_enabled', '__return_false' );

// Eliminar enlaces de detección XML-RPC del head.
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );

// Bloquear métodos XML-RPC disponibles.
add_filter( 'xmlrpc_methods', function( $methods ) {
    return [];
} );

// 2. Eliminar versión de WordPress del código fuente.
remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_empty_string' );

add_filter( 'style_loader_src', 'kodflux_remove_version_strings', 9999 );
add_filter( 'script_loader_src', 'kodflux_remove_version_strings', 9999 );

function kodflux_remove_version_strings( $src ) {
    if ( strpos( $src, 'ver=' ) ) {
        $src = remove_query_arg( 'ver', $src );
    }

    return $src;
}

// 3. Deshabilitar editor de archivos en el dashboard.
if ( ! defined( 'DISALLOW_FILE_EDIT' ) ) {
    define( 'DISALLOW_FILE_EDIT', true );
}

// 4. Throttle Heartbeat API para reducir carga de servidor.
add_filter( 'heartbeat_settings', function( $settings ) {
    $settings['interval'] = 60;
    return $settings;
} );

add_action( 'init', function() {
    global $pagenow;

    if ( $pagenow !== 'post.php' && $pagenow !== 'post-new.php' ) {
        wp_deregister_script( 'heartbeat' );
    }
} );

// 5. Limitar revisiones de posts a 3.
add_filter( 'wp_revisions_to_keep', function( $num, $post ) {
    return 3;
}, 10, 2 );

// 6. Ocultar errores de login para no revelar si el usuario existe.
add_filter( 'login_errors', function() {
    return 'Las credenciales ingresadas no son correctas.';
} );

// 7. Opcional: restringir REST API a usuarios autenticados.
// Comenta este bloque si usas WordPress headless o integraciones públicas.
/*
add_filter( 'rest_authentication_errors', function( $result ) {
    if ( ! is_user_logged_in() ) {
        return new WP_Error(
            'rest_not_logged_in',
            'La API REST de WordPress requiere autenticación.',
            [ 'status' => 401 ]
        );
    }

    return $result;
} );
*/

Prompt para Codex

TEXT
Crea un snippet PHP para WordPress (compatible con WPCode y functions.php) que implemente las siguientes medidas de seguridad y rendimiento:

1. Deshabilitar XML-RPC con add_filter xmlrpc_enabled => false y vaciar xmlrpc_methods
2. Eliminar links rsd_link y wlwmanifest_link del <head>
3. Quitar la versión de WordPress del HTML con remove_action wp_generator y the_generator filter
4. Eliminar el parámetro ?ver= de URLs de scripts y estilos para ocultar fingerprint
5. Definir DISALLOW_FILE_EDIT como true para bloquear el editor de archivos del dashboard
6. Reducir el intervalo del Heartbeat API a 60 segundos y desactivarlo fuera del editor de posts
7. Limitar revisiones de posts a 3 con filtro wp_revisions_to_keep
8. Personalizar el mensaje de error de login para no revelar si el usuario existe
9. Incluir bloque comentado (opcional) para restringir REST API a usuarios autenticados

Añade comentarios explicativos en español antes de cada sección. Sin plugins externos, solo WordPress nativo.

Buscar en Kodflux