WordPress y su nuevo modo de recuperación

WordPress es muy popular hoy en día para hacer todo tipo de sitios no solo blogs como se hacía antes.

Con esta nueva versión (5.2), el equipo que desarrollo de WordPress ha realizado varias mejoras en la seguridad y una en particular es el modo de recuperación.

Antes cuando fallaba un plugin o tema ocasionaba estragos dejando inaccesible la administración de WordPress. Si querías el acceso solo te quedaba desactivar temas o plugins mediante FTP. A veces implicaba desactivarlos todos.

Ahora ya no ocurrirá así gracias a este modo de recuperación, lo que es un alivio para todos los que administramos uno o más sitios mediante WordPress.

El reto que tenía el equipo de WordPress

El reto fue que el administrador de WordrPress siempre tuviera acceso a su administración aún cuando existiera un error fatal. Al tener un acceso administrativo aún con errores permite recuperarse de esto y lograr volver a poner el sitio en línea o actualizarlo si solo esta parte era la que no era posible realzar.

El modo de recuperación de WordPress.

Desde esta nueva versión 5.2 de WordPress, se le permite a los administradores corregir o mitigar errores fatales en el sitio que antes hubieran no hubieran sido posibles de corregir sin la intervención de alguien con acceso a los archivos por FTP o mediante un cPanel, Plesk u otro panel disponible.

Cuando se presenta un error fatal, se muestra una pantalla de error que informa al usuario/visitante de que el sitio está experimentando dificultades técnicas.

Ahora si ocurre el error se enviará un correo electrónico a la dirección de correo electrónico del administrador informando del problema e incluyendo un enlace secreto a la nueva función llamada «modo de recuperación».

Al hacer clic en el enlace recibido el usuario entrará en este modo de recuperación que funciona colocando una cookie en el cliente actual.

En el modo de recuperación, los plugins y temas que han provocado el error fatal se pausan para esa instancia, a fin de poder solucionar estos errores y acceder a la administración a la manera habitual.

Después de entrar en el modo de recuperación, el usuario debe iniciar sesión.

Es de tener en cuenta que el modo de recuperación está asociado a la cookie existente en ese navegador en ese momento, no se liga a ningún usuario en particular.

Al iniciar sesión, un aviso de administración indicará que el modo de recuperación está activo. El usuario será informado sobre qué plugins/temas están actualmente pausados debido a errores fatales y cuáles son los errores.

Ahora ya tendrás la posibilidad de afrontar esta dificultad:

  • Desactivando completamente el plugin o tema, por ejemplo, cuando el mantenimiento de una versión funcional del sitio es más importante que la funcionalidad del plugin o tema. Esta es normalmente una solución temporal, pero proporciona una resolución inmediata.
  • Arreglando el problema si tienes las capacidades técnicas, y luego ya reiniciar el plugin o tema.
  • Enviando un ticket de soporte al autor del plugin o tema específico o contactar con un desarrollador indicando el error exacto que se presenta.

En cualquier momento, puedes decidir salir del modo de recuperación, haciendo clic en un botón que aparece permanentemente en la barra de administración mientras estés en ese modo.

Al salir de ese modo se eliminará automáticamente la cookie y hará que vuelvan a funcionar como de costumbre todos los plugins y temas. Por lo que si el problema no fue corregido el error aparecerá de nuevo.

El principal beneficio del modo de recuperación es recibir la información de qué ocurre y poder hacer algo.

La pausa de los plugins y temas sólo se produce para la sesión en el modo de recuperación y no tiene implicaciones globales.

Con un plugin o tema roto solo el usuario en modo de recuperación puede acceder a las áreas rotas.

Pausar plugins, temas y sus implicaciones en temas de seguridad

Si un atacante pudiera forzar la pausa en los plugins o temas causando básicamente que se desactiven en variables protegidas, como en la administración o la página de inicio de sesión podría tener un impacto severo en la seguridad.

Un plugin de seguridad puede tener una debilidad fortuita que no es necesariamente relevante para la seguridad aunque parezca paradógico.

Sin embargo, si ese plugin también añadiera una doble validación a la página de inicio de sesión de WordPress, al eludirlo siendo desactivado permitiría al atacante saltarse la validación de dos factores en el sitio y acceder al mismo.

Para que el pausado fuera seguro era necesario cerciorarse que la pausa se produjese sólo para ciertos usuarios, aquellos que tuviesen suficientes capacidades para solucionar los problema.

El nuevo enfoque se basa en el concepto de un modo de recuperación en el que sólo usuarios específicos podrán entrar en ese modo de recuperación y sólo en ese modo de recuperación deberían poder pausarse los plugins o temas

Esto asegura que un error fatal no tenga un impacto global. Si un atacante provocara intencionadamente un error fatal en un plugin no obtendría nada al final.

El modo de recuperación de WordPress es una versión mejorada pues tiene en cuenta el tipo de usuario que visualiza el error y actúa en consecuencia, lo que es mucho más seguro.

Ahora, cuando falle un plugin o tema, no necesariamente necesitarás inmediatamente de un administrador del sistema o webmaster. Tienes un modo rápido y sencillo para desactivar lo que haya provocado el error fatal y ya con el sitio recuperado contactar con alguien que pueda solucionar el problema que lo provocó indicándole lo que has averiguado.

Para los desarrolladores

Hay un par de formas en las que los desarrolladores pueden interactuar con las nuevas características del modo de recuperación:

  • Los plugins que deseen mejorar el modo de recuperación pueden llamar a una nueva función wp_is_recovery_mode() para comprobar si está activa.
  • También se puede anular la forma en que se configura y valida el modo de recuperación si prefieres utilizar un método diferente o activarlo por medio de código. Un plugin imprescindible (mu-plugin), por ejemplo, puede establecer la constante WP_RECOVERY_MODE_SESSION_ID que debe contener un ID de sesión arbitrario, que luego se utilizará para almacenar datos específicos del modo de recuperación para esa sesión.
  • Al tener la constante disponible se forzará el modo de recuperación. Sin embargo, este mecanismo debe utilizarse con especial cuidado, ya que si se establece la constante de forma incondicional, el modo de recuperación se activará de forma global.
  • La plantilla para la pantalla que muestra que ha ocurrido un error fatal puede personalizarse usando un plugin dependiente (drop-in) php-error.php, similar a otros plugins dependientes ya existentes, como db-error.php.
  • El controlador de apagado completo puede anularse utilizando el plugin dependiente fatal-error-handler.php. Este dependiente debe devolver una instancia de una clase que extiende la clase WP_Fatal_Error_Handler por defecto. Si ese es el caso, se utilizará la instancia en lugar de la predeterminada.
  • Si quieres desactivar el controlador de errores fatales y el modo de recuperación puedes hacerlo definiendo la constante WP_DISABLE_FATAL_ERROR_HANDLER, normalmente en wp-config.php. El estado de activación del controlador debe comprobarse utilizando la nueva función wp_is_fatal_error_handler_enabled().

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *