Actualizaciones, copias de seguridad y roles
Módulo 6: Gestión y seguridad · Tiempo de lectura: 11 minutos
Objetivo de aprendizaje: Después de esta lección podrá actualizar una tienda WooCommerce y hacer copias de seguridad sin perder pedidos, y repartir los permisos de modo que cada persona solo pueda hacer lo necesario.
Conceptos clave: actualización grande y pequeña, actualización de la base de datos, extensiones y compatibilidad, sobrescrituras de plantillas (template overrides), plantillas obsoletas, copia de seguridad antes de actualizar, pedidos entre la copia de seguridad y la restauración, tablas HPOS, roles Gestor de la tienda (Shop manager) y Cliente (Customer), privilegios mínimos, mostrar versiones, xmlrpc.php
Por qué una tienda es distinta de un sitio normal
En el curso de WordPress (lecciones 7.2, 8.1 y 8.2) se explica cómo actualizar WordPress, cómo hacer copias de seguridad y cómo restaurarlas. En una tienda todo eso sigue siendo válido, con una gran diferencia: la base de datos cambia durante todo el día. Cada pedido, cada cliente, cada cambio de existencias y cada pago se guarda en ella. En un sitio informativo, con una copia de seguridad de ayer pierde como mucho una entrada. En una tienda pierde pedidos que ya se han pagado.
Por eso, dos reglas básicas para esta lección:
- En una tienda, restaurar es el último paso, no el primero.
- Actualice con un plan, no "un momento entre otras cosas el viernes por la tarde".
Actualizaciones de WooCommerce
WooCommerce publica nuevas versiones con regularidad y, entre ellas, pequeñas correcciones. El número de versión tiene tres partes, como 11.2.2. Un cambio en el último número es una pequeña corrección o una actualización de seguridad; un cambio en el primer o en el segundo número trae nuevas funciones y, a veces, cambios a los que deben adaptarse las extensiones o su tema.
En una actualización de WooCommerce ocurren tres cosas que se ven menos en un plugin normal:
- Una actualización de la base de datos. A veces WooCommerce tiene que modificar las tablas. Verá entonces un aviso en la administración indicando que la base de datos se está actualizando; esto se ejecuta en segundo plano mediante las acciones programadas (lección 7.3). No lo interrumpa y compruebe en WooCommerce > Estado si ha terminado.
- Las extensiones deben acompañar. Los plugins de pago, las integraciones de envío y las de contabilidad indican hasta qué versión de WooCommerce se han probado. En la pantalla de plugins verá una advertencia si una extensión no menciona una versión más reciente. Lea los cambios de su plugin de pago antes de actualizar: un plugin de pago que se estropea significa una tienda que no vende.
- Sobrescrituras de plantillas. Muchos temas tienen sus propias copias de plantillas de WooCommerce (la carpeta
woocommerce/del tema). Si WooCommerce cambia el original, la copia queda obsoleta. En WooCommerce > Estado (Estado del sistema) aparece abajo, junto al tema, qué plantillas sobrescribe y cuáles están obsoletas. Las plantillas obsoletas pueden carecer de campos nuevos o provocar errores. Actualice el tema o pida una actualización a su creador.
Las actualizaciones pequeñas (último número) conviene aplicarlas pronto, preferiblemente de forma automática, porque a menudo corrigen fallos de seguridad. Las actualizaciones grandes se prueban primero en staging (lección 7.3), en un momento tranquilo y con una copia de seguridad justo antes.
Copias de seguridad: qué desaparece al restaurar
Un ejemplo. Theehuis Example hace cada noche a las 03.00 una copia de seguridad. El martes a las 10.00 el administrador actualiza WooCommerce y después la página de producto muestra un error. Entre las 03.00 y las 10.00 entraron seis pedidos, pagados a través del proveedor de pago. Si ahora restaura la copia de las 03.00:
- esos seis pedidos desaparecen de la base de datos, aunque el dinero sí está en el proveedor;
- la tienda ya no sabe que las existencias son menores;
- es posible que más tarde la tienda reciba avisos (webhooks) del proveedor sobre pedidos que no conoce.
Por eso:
- Haga una copia de seguridad justo antes de una actualización, no solo por la noche. Así el hueco es lo más pequeño posible.
- Al restaurar, anote qué pedidos llegaron después de la copia de seguridad (a partir de los correos "Nuevo pedido" y del panel de su proveedor) y vuelva a introducirlos después a mano, o expórtelos antes.
- Restaure preferiblemente solo los archivos (la carpeta antigua del plugin o del tema) si el problema está en el código, y deje la base de datos como está. A menudo se puede deshacer una actualización instalando la versión anterior del plugin; el curso de WordPress, lección 8.2, muestra cómo restaurar de forma selectiva. Si la actualización ya ha actualizado la base de datos, puede que la versión antigua ya no funcione con ella: por eso conviene probar antes en staging.
- Haga copias de seguridad con más frecuencia que en un sitio normal: una tienda que recibe pedidos todo el día necesita al menos una copia diaria de la base de datos, mejor varias, y una copia fuera del servidor (regla 3-2-1, curso de WordPress, lección 8.1).
Desde WooCommerce 8.2, en las tiendas nuevas los pedidos se guardan en tablas propias (HPOS, lección 1.2), como wp_wc_orders. Un plugin de copias de seguridad que solo incluya las "entradas" o que elija las tablas por nombre debe incluir también esas tablas. Compruebe en una prueba de restauración (curso de WordPress, lección 8.2) que los pedidos están realmente incluidos.
En WebOké, WebOké Backups hace cada noche una copia de seguridad que se conserva durante 30 días en otro centro de datos (DA 16.1); además, puede hacer usted mismo una copia antes de una actualización en DirectAdmin o en Installatron. En otros proveedores de alojamiento funciona de forma parecida; pregunte con qué frecuencia y durante cuánto tiempo.
Roles: quién puede hacer qué
WooCommerce añade dos roles a WordPress (curso de WordPress, lección 3.3):
- Cliente (Customer): un cliente con una cuenta. Solo puede ver sus propios pedidos y datos. No dé nunca permisos de administración a este rol.
- Gestor de la tienda (Shop manager): puede gestionar productos, pedidos, clientes, cupones y los ajustes de WooCommerce, pero no puede instalar plugins ni cambiar el tema.
Para el personal que prepara pedidos, responde a preguntas de clientes o introduce productos, basta con Gestor de la tienda. Administrador es solo para quien se ocupa de la parte técnica. Cada empleado debe tener su propia cuenta, con verificación en dos pasos (curso de WordPress, lección 7.3); nada de una cuenta compartida "tienda". Un gestor de la tienda ve todos los datos de los clientes, así que elimine las cuentas cuando alguien se marche.
Las claves API (lección 2.4) también son una forma de permisos: dé a una integración solo permiso de lectura si no necesita escribir nada, y elimine las claves que ya no se usen.
Qué muestra su tienda a todo el mundo
Los atacantes buscan tiendas con una versión antigua de WooCommerce o con un plugin de pago con una vulnerabilidad conocida. WooCommerce añade por defecto una línea <meta name="generator" content="WooCommerce 11.2.2"> al código fuente, y la versión aparece también detrás de las hojas de estilo (?ver=). Ocultarla es una pequeña ganancia; actualizar, una grande. Una tienda que está al día no tiene que preocuparse mucho por un número de versión visible. Una tienda que va con retraso se delata.
El archivo xmlrpc.php es una antigua interfaz con la que las aplicaciones inician sesión en WordPress. Se utiliza mucho de forma abusiva para adivinar contraseñas. Si no usa ninguna aplicación o servicio que lo necesite, bloquéelo (en WebOké está bloqueado por defecto, KB 169). Un xmlrpc.php abierto responde a una petición normal en el navegador con "XML-RPC server accepts POST requests only." y el estado 405. Bloqueado devuelve 403 o 404.
Resumen
- La base de datos de una tienda cambia todo el día: restaurar cuesta pedidos que ya se han pagado.
- Actualizaciones pequeñas, pronto; actualizaciones grandes, primero en staging; vigile la actualización de la base de datos, las extensiones y las plantillas obsoletas en WooCommerce > Estado.
- Copia de seguridad justo antes de una actualización y con más frecuencia que en un sitio normal; compruebe que se incluyen las tablas de pedidos.
- El personal recibe el rol Gestor de la tienda, no Administrador; cada uno con su propia cuenta y verificación en dos pasos.
- Ocultar versiones ayuda poco, actualizar mucho; bloquee xmlrpc.php si no lo usa.
Cuestionario
Ejercicio
Ejercicio A6.2: ¿Muestra su tienda las versiones? Introduzca la dirección de su tienda, su versión de WordPress (Escritorio > Actualizaciones) y su versión de WooCommerce (Plugins). El programa solicita la página de inicio y el feed, y el archivo /wp-content/plugins/woocommerce/readme.txt (solo los primeros 2 kB, la línea "Stable tag"). Busca números de versión de WordPress y WooCommerce en las líneas generator y detrás de ?ver= en las hojas de estilo de WooCommerce, y consulta en wordpress.org las versiones más recientes. Verde si sus versiones son las más recientes y lo que se ve coincide con ellas. Naranja si solo queda pendiente una actualización pequeña, o si la versión es visible pero está al día. Rojo si va una versión grande por detrás, si la versión visible es distinta de la que ha introducido (se está ejecutando algo distinto de lo que cree) o si los datos introducidos no son válidos.
Ejercicio A6.2b: ¿Está bloqueado xmlrpc? Introduzca la dirección de su tienda y marque la casilla si usa una aplicación o un servicio que necesita xmlrpc.php. El programa solicita /xmlrpc.php con un GET normal, sin enviar nada. Verde con 401, 403, 404, 410, una redirección o una página HTML normal. Rojo con 405 y el texto "XML-RPC server accepts POST requests only." sin la casilla marcada; naranja si ha indicado que lo necesita. También comprueba si la lista de nombres de usuario a través de /wp-json/wp/v2/users es pública (naranja si se ven nombres).
Una marca verde significa que esta comprobación es correcta ahora, no que su tienda sea segura.
Para saber más
Los pasos en un panel se refieren a WebOké; en otros proveedores funciona de forma parecida.
- Curso gratuito de WordPress 7.2: Mantener las actualizaciones al día
- Curso gratuito de WordPress 8.1: Copias de seguridad: qué, dónde y con qué frecuencia
- Curso gratuito de WordPress 8.2: Restaurar y probar
- Curso gratuito de WordPress 3.3: Usuarios y perfiles
- Manual de DirectAdmin 16.1: Qué copias de seguridad hay disponibles en WebOké
- WebOké Backups: ver, restaurar o descargar una copia de seguridad
- WordPress: no funciona el acceso a xmlrpc.php
- High Performance Order Storage (developer.woocommerce.com, en inglés): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
