Con la llegada de la versión 5.2 de WordPress se han incluido varias mejoras de seguridad, entre las que se encuentra el modo de recuperación.
Esta era una necesidad hace mucho tiempo, pues cuando fallaba un plugin o tema en WordPress muchas veces la administración quedaba inaccesible, y para recuperar el control no quedaba más remedio que desactivar manualmente el plugin o tema desde FTP o el panel del hosting, o incluso desactivarlos todos.
Por ello, el modo de recuperación de WordPress es un bote salvavidas imprescindible, pues ahora ya no se rompe todo.
Índice de contenidos
El objetivo
El reto fundamental de este cambio, de la incorporación del modo de recuperación de WordPress es que el administrador siempre tenga acceso a la administración, incluso cuando haya un error fatal, para poder realizar alguna acción que ayude a recuperar el sitio.
El modo de recuperación de WordPress
Desde WordPress 5.2, se permite a los administradores corregir o mitigar errores fatales en el sitio que antes hubieran sido imposibles de corregir sin la intervención del desarrollador o acciones manuales en el servidor.
Incluso en el caso de que un error fatal hubiera hecho que la administración fuera completamente inaccesible (por ejemplo, a través de la llamada «pantalla blanca de la muerte»), los administradores tenemos ahora la oportunidad de iniciar sesión y hacer algo al respecto.
Cuando se produce un error fatal, aparece una pantalla de error que informa al usuario/visitante de que el sitio está experimentando dificultades técnicas.
Pero lo más importante es que, cuando se produce un error de este tipo, se enviará un correo electrónico a la dirección de correo electrónico del administrador, informando sobre el problema e incluyendo un enlace secreto a una nueva función llamada «modo de recuperación».
Al hacer clic en este enlace, 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 ese cliente, para 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.
Cabe destacar que el modo de recuperación en sí no está ligado a un usuario específico, sino sólo a la cookie existente en el cliente.
Después de iniciar sesión, un aviso de administración indicará que el modo de recuperación está activo. Además, el usuario será informado sobre qué plugins/temas están actualmente en pausa debido a errores fatales, y cuáles son exactamente estos errores.
A partir de este momento ya tendrás la posibilidad de abordar la cuestión de la forma que prefieras:
- Puedes desactivar 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/tema. Esta es normalmente una solución temporal, pero proporciona una resolución inmediata.
- Puedes arreglar el problema si tienes las capacidades técnicas, y luego reiniciar el plugin/tema.
- Puedes enviar un ticket de soporte al autor del plugin/tema respectivo o contactar con un desarrollador, indicando el error exacto.
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 el modo de recuperación.
Salir del modo de recuperación borrará la cookie del cliente y hará que vuelvan a funcionar como de costumbre todos los plugins/temas. Ten en cuenta que si un plugin/tema sigue roto, el error fatal permanecerá.
El principal beneficio del modo de recuperación es informar a los administradores sobre los errores fatales en el sitio y permitir acceder a la administración y decidir qué hacer con el problema, en lugar de ver la típica «pantalla blanca de la muerte» en la que no se puede hacer nada.
Es imposible corregir automáticamente estos errores, pero el modo de recuperación permite trabajar en ellos al pausar los plugins/temas rotos.
La pausa sólo se produce para el cliente que se encuentra en modo de recuperación y, por lo tanto, no tiene implicaciones globales.
Con un plugin/tema roto, sólo el usuario en modo de recuperación puede acceder a las áreas rotas; para los demás usuarios, el sitio permanece en un estado roto hasta que el problema se haya solucionado o mitigado.
El pausado de plugins y temas, y sus implicaciones de seguridad
La idea de pausar plugins y temas globalmente era el problema que había hasta la solución encontrada en WordPress 5.2.
Porque si un atacante puede forzar una pausa en las extensiones, 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, claramente, en la seguridad.
Un plugin de seguridad puede tener una debilidad fortuita que, aunque sea un indicador de falta de calidad, no es necesariamente relevante para la seguridad.
Sin embargo, si ese plugin también añadiera una doble validación a la página de inicio de sesión de WordPress, usar el defecto de seguridad de poder pausar el plugin permitiría al atacante eludir la validación de dos factores en el sitio.
La idea de pausar las extensiones tiene sentido, por supuesto, ya que es imposible actuar más granularmente sobre un error fatal debido a la falta de entorno de pruebas en WordPress.
Sin embargo, era necesario asegurarse de que la pausa se produjese sólo para ciertos usuarios, los que tuviesen suficientes capacidades para solucionar los problemas, ya sea desactivando permanentemente la extensión defectuosa o contactando con un desarrollador para que se encargue de ello – por lo general, el propietario del sitio que, en el caso de WordPress, es casi siempre, también administrador.
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 las extensiones (plugins/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 más que eso.
El modo de recuperación y 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, comodb-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 claseWP_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 enwp-config.php
. El estado de activación del controlador debe comprobarse utilizando la nueva funciónwp_is_fatal_error_handler_enabled()
.
Resumiendo
El modo de recuperación de WordPress es una versión mejorada del que ya se trató de introducir en la versión 5.1, pero ahora mucho mejor, pues tiene en cuenta el tipo de usuario que visualiza el error y actúa en consecuencia, lo que es mucho más seguro.
El resultado es que ahora, cuando falle un plugin o tema, no necesariamente necesitarás inmediatamente de un administrador del sistema o un desarrollador. Tienes un modo rápido y sencillo para desactivar lo que haya provocado el error fatal y, ya con el sitio recuperado, ahora ya sí, contactar con alguien que pueda solucionar el problema que lo provocó.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Hola Fernando,
¿Qué pasa si aparece ese mensaje de las dificultades técnicas, no deja tampoco entrar en la parte de administración y no recibes ningún correo para la recuperación?
Gracias.
Me pasa lo mismo. De ninguna de las formas recibo el email. He probado a forzar en el wp-config.php poniendo esto:
define('RECOVERY_MODE_EMAIL', '[email protected]');
(cambiando «test» por mi correo)
Pero aun y todo sigo sin recibir correo de ninguna de las webs con las que he tenido problemas.
¿Funciona bien? Alguien ha recibido el email cuando ha tenido problemas?
¿Habéis mirado en la carpeta de spam?
Claro, lo primero que hice.
Hola, yo estoy igual , no llega el correo. ¿Alguna solución?
Al final restauré la web con una copia y cambié a la versión anterior de wordpress. Mira que la url del admin no esté haciendo una redirección.
He leido por ahi que subiendo la memoria de PHP en wp-config.php se soluciona, pero es cierto que hace falta una solución alternativa al email de recuperación, claramente
Subir la memoria php no me funcionó.