Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Deshabilitar los pingbacks vía XML-RPC para impedir ataques de fuerza bruta a WordPress

Imago voragine.net
[actualizado el ] • Por Enlace permanente

Actualización septiembre 2022. Esta solución da error en las últimas versiones de WordPress y PHP. No funciona con WordPress 6 o superior y con PHP8. Puedes encontrar una solución actualizada en este otro post.


Parece ser que para evitar potenciales ataques de fuerza bruta a sitios con WordPress a través del protocolo XML-RPC, basta deshabilitar los pingbacks y no todo el sistema XML-RPC, como cuentan en WP-Tavern.

Si en tu sitio utilizas servicios que utilizan XML-RPC, como algunos plugins como Jetpack o la aplicación móvil de WordPress quizás te interese deshabilitar únicamente los pingbacks, que son en realidad la puerta de entrada de los ataques de fuerza bruta a WordPress.

Añade la siguiente función al functions.php de tu theme:

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

Evitar y resolver ataques de fuerza bruta a sitios con WordPress: la vulnerabilidad XML-RPC

Imago voragine.net
• Por

Hace unos seis meses se descubrió que el archivo xmlrpc.php de WordPress, responsable de las comunicaciones remotas vía XML-RPC, convertía a los servidores donde estuviese instalado este gestor de contenidos en potenciales participantes de ataques DoSS. Hace un par de meses esta vulnerabilidad se empezó a usar también como puerta de entrada de ataques de fuerza bruta a los propios servidores.

Desde la versión 3.5, el protocolo XML-RPC viene activado por omisión en WordPress lo que hace que cualquier instalación de WordPress sea vulnerable. Para eliminar esta vulnerabilidad no queda otra que desactivar completamente el soporte XML-RPC de WordPress.

Cómo actualizar WordPress, instalar plugins o themes en localhost automáticamente

Imago voragine.net
• Por
WordPress se puede actualizar de dos maneras: automáticamente mediante el botón Actualizar del panel de administración, o sustituyendo los antiguos archivos por los nuevos vía FTP. Hay veces que usando el primer método, WordPress nos pide las credenciales de conexión con el servidor, y hay veces que aunque se las demos, la actualización no se produce. Esto es común en instalaciones de WordPress en localhost aunque se puede dar en cualquier servidor. Cuando esto ocurre la causa es una configuración del servidor incompatible; generalmente el problema está relacionado con los permisos y propietarios de los archivos.

Cómo modificar el shortcode caption de WordPress para adaptarlo a HTML5 y hacerlo más responsive

Imago voragine.net
[actualizado el ] • Por
El shortcode caption es el que usamos, aún sin darnos cuenta, para introducir imágenes con pie de foto en el contenido de un post o página. Aunque dispone de algunos parámetros que nos permiten configurar mínimamente el estilo, la salida que genera no cuenta con las marcas semánticas para imágenes de HTML5. Además el shortcode define un ancho absoluto para la imagen, haciendo que el código no sea responsive. Modificando el shortcode con una función que podemos incluir en un plugin o en el archivo functions.php del theme, podemos añadir estas dos características al caption.

Cambiar la extensión por omisión del excerpt o extracto en WordPress

El excerpt de WordPress, si no se define para un post, está programado para seleccionar las 55 primeras palabras del contenido del post.

Si se quiere cambiar esta extensión se puede incluir el siguiente código en el archivo functions.php del theme:

// configurando la extensión por omisión del excerpt a 20 palabras
function prefijo_excerpt_length( $length ) {
        return 20;
}
add_filter( 'excerpt_length', 'prefijo_excerpt_length', 999 );

Añadir algunas capacidades a un tipo de usuario (rol) en WordPress

Imago voragine.net
[actualizado el ] • Por
WordPress dispone de cinco tipos de usuario, cinco roles, con capacidades diferentes. Hay veces que ninguno de estos tipos se ajusta exáctamente al uso que un usuario hará de una página con WordPress. En estos casos podemos añadir o eliminar capacidades o permisos a uno de los cinco tipos de usuario, para adaptarlo a nuestras necesidades.

Entendiendo el sistema de paginación de WordPress: paginando el archivo, los resultados de búsqueda o un custom post type

Imago voragine.net
• Por

La función que ofrece WordPress para introducir una barra con enlaces a las diferentes páginas de resultados es paginate_links, es decir, un paginador de resultados del tipo "Anterior, 1, 2, 3, ..., Siguiente".

Esta función se encarga de construir las URLs para cada página de resultados, y es eficaz, salvo si entran en juego otros parámetros en la URL, por ejemplo s si queremos paginar los resultados de una búsqueda o post_type si estamos paginando un loop para un post type diferente a post. En estos casos, tendremos que ayudar a paginate_links a construir las URLs.

Para ello tenemos que darle a WordPress la siguiente información:

  • El loop a paginar.
  • El número total de páginas, en función de la cantidad de posts en el loop y la página actual en la que se está.
  • Los parámetros de la URL que queremos mantener en los enlaces a las distintas páginas.

Cómo obtener y mostrar la descripción, o caption, de las imágenes destacadas (post thumbnail) en WordPress

Imago voragine.net
• Por
WordPress ofrece la posibilidad de asignar una imagen destacada, post thumbnail en el argot de WordPress, a cada post, lo cual da mucha flexibilidad a la hora de mostrar el contenido y esta imagen de manera independiente. Para manejar las imágenes destacadas hay distintas funciones, pero ninguna de ellas permite obtener la descripción, o caption, que podemos añadir a la imagen en el administrador de WordPress. Para obtener la descripción, y otras informaciones de una imagen destacada, tenemos que recurrir a la función genérica get_post.

Cómo ordenar un loop de WordPress siguiendo varios criterios: multiple orderby

El parámetro orderby de la clase WP_Query de WordPress puede ser múltiple. Así podemos componerlo con múltiples criterios, siendo el primero el dominante.

Por ejemplo, si queremos ordenar un loop bajo los criterios title y menu_order, y que el título del post sea dominante, pasaremos los siguientes parámetros a WP_Query:

$args = array(
  'post_type' => 'page',
  'orderby' => 'title menu_order',
  'order' => 'ASC'
);
Contexto

Qué hacer si la plantilla single de un custom post type de WordPress no muestra el post

Hay veces que, tras configurar un custom post type, y definir la plantilla single para mostrarlo, ya sea la genérica single.php o una específica single-post-type-name.php, la URL de cualquier entrada de ese custom post type nos devuelve un error 404, si tenemos creada la plantilla 404.php, o la portada, el index.php, si no la tenemos creada.

Esto es fácil de solucionar, pero no es nada intuitivo: basta volver a guardar la Estructura de permalinks en el panel de admininstración, en la pestaña Configuración general, Estructura de permalinks.

Si queremos que esto se haga automáticamente, para que un theme recién instalado y activado no dé problemas, podemos incluir la función flush_rewrite_rules() en el archivo functions.php del theme después de crear el custom post type.