Evaluación inicial sin contraseñas Presupuesto antes de intervenir Especialista responsable de principio a fin

Sesiones Cache Estado Cliente

Los clientes ven el carrito cacheado de otro visitante

Contén y repara una fuga de caché rastreando HTML, fragments, Store API, edge, servidor, claves y separación de sesiones.

Ver el carrito de otra persona es un incidente de privacidad e integridad. Puede exponer desde productos hasta nombres, direcciones o cuenta. Normalmente significa que contenido personalizado entró en caché compartida, no que WooCommerce uniera sesiones.

Contén la exposición antes de optimizar rendimiento y conserva evidencia mínima anonimizada.

Contén las páginas afectadas

Desactiva caché completa para Carrito, Checkout, Mi cuenta, confirmación y cualquier ruta con datos de cliente. Purga esas URL en Cloudflare, hosting y WordPress.

Si aparecen nombres, direcciones o pedidos, restringe temporalmente la página y sigue el procedimiento interno de privacidad.

No publiques capturas. Guarda una copia redactada con hora, URL y cabeceras.

Preserva la configuración y los identificadores de despliegue antes de cambiarlos: regla de caché, versión del plugin, fecha de publicación y host afectado. No conserves el objeto cacheado completo si contiene datos; basta una huella segura, la clave redactada y el fragmento mínimo que demuestra el cruce.

Demuestra si filtró HTML o JavaScript

Usa dos perfiles privados limpios y crea carritos sintéticos distintos. Carga la ruta sospechosa en ambos.

Inspecciona el HTML raw antes de scripts. Si los datos de A están en la respuesta de B, la caché de página está implicada. Si el HTML es genérico pero llegan después, revisa fragments, Store API y AJAX propio.

Conserva:
- URL y hora
- cabeceras y pistas de cache key
- resultado anónimo A/B
- fragmento de respuesta redactado

No retengas cookies ni campos personales.

Inspecciona todas las capas

El plugin WordPress es solo una capa. Puede haber FastCGI, Varnish, LiteSpeed y reglas HTML en Cloudflare.

Lee Age, Cache-Control, CF-Cache-Status y cabeceras del host. Las respuestas dinámicas deben indicar private/no-cache cuando corresponda.

Purgar contiene, pero no repara: la fuga volverá al llenarse una clave insegura.

Comprueba qué objetos quedaron almacenados y su TTL: HTML, fragmentos, REST, respuestas de Edge Side Includes o caché de navegador. Una exclusión de página no corrige un endpoint JSON cacheado por una regla distinta. Documenta cada capa que pudo distribuir la respuesta.

Corrige claves y bypass

La política segura es no cachear página completa en rutas transaccionales o de cuenta. En otras páginas, no almacenes contenido variado por sesión o login salvo soporte explícito.

Las reglas por cookie deben coincidir con nombres actuales y ejecutarse antes del lookup. Trata deliberadamente query strings, idioma y moneda.

No crees una variante por cada ID de sesión: provoca explosión de caché y sigue arriesgando datos.

Revisa si la caché ignora Set-Cookie, elimina cookies al origen o usa una clave que no incluye hostname, idioma o moneda. Dos tiendas o idiomas pueden compartir la misma URL normalizada y recibir contenido cruzado aun cuando sus sesiones WooCommerce sean correctas.

Revisa fragments y endpoints propios

El mini-carrito suele cargar por fragments o Store API. Esas respuestas deben corresponder a la sesión actual y no cachearse públicamente.

Revisa endpoints REST personalizados por permisos y cabeceras. Una respuesta con carrito o cliente debe ser privada y verificar autorización.

Si una optimización retrasa fragments, puede ser HTML local antiguo. La prueba raw con dos navegadores diferencia ese caso de una fuga servidor.

Comprueba separación de usuarios

Prueba invitado A, invitado B, cliente A y cliente B. Los usuarios conectados no deben recibir páginas públicas cacheadas y los carritos anónimos deben mantenerse separados.

Confirma que el proxy conserva cookies y Set-Cookie. En varios nodos, revisa acceso compartido a sesión y base de datos.

La inconsistencia por nodo puede mostrar datos antiguos, pero HTML cruzado sigue apuntando fuertemente a caché.

Prueba también páginas de pedido recibido con una clave inválida y cuentas sin autorización. Aunque estén excluidas de la caché, deben comprobar permisos y no mostrar información por conocer un ID. La reparación de caché no sustituye los controles de acceso de WordPress y WooCommerce.

Verifica contención y reparación

Tras excluir, calienta la caché y repite la matriz de cuatro sesiones en carrito, checkout, cuenta, pedido recibido y cabecera.

Comprueba que no queden datos de cliente en el almacenamiento de caché cuando pueda inspeccionarse con seguridad.

Estima mediante logs la ventana y URL afectadas. La solución técnica no sustituye decisiones legales o de notificación de la organización.

Identifica qué campos pudieron verse, cuántas respuestas se sirvieron y si los logs permiten acotar usuarios sin ampliar la recopilación. Entrega esa evaluación al responsable de privacidad; el técnico no debe decidir por sí solo la obligación de comunicar.

El mantenimiento recurrente debe revisar cabeceras después de cambios de caché y probar sesiones aisladas. Ninguna mejora de rendimiento justifica debilitar la separación entre clientes.

ANTES DE ENVIAR LA SOLICITUD

Preguntas frecuentes.

¿Pedís contraseñas en el formulario?+

No. El formulario público nunca solicita accesos. Los datos seguros se piden únicamente después de aprobar el alcance y el presupuesto.

¿Quién revisa la incidencia?+

La solicitud llega a Jordi Ensenyat, fundador de Code Barcelona y especialista WordPress con más de 15 años de experiencia.

¿Se cambia algo antes del presupuesto?+

No. Primero se revisan los síntomas visibles y se define el alcance. La intervención empieza tras la aprobación y con una vía de vuelta preparada.

¿Trabajáis con webs en inglés y fuera de España?+

Sí. WP Repair atiende incidencias WordPress y WooCommerce en inglés y español, con servicio remoto.

Evaluar mi incidencia