Registro de cambios — PrestaWard Facet Shield
Este historial resume, versión a versión, el impacto para tiendas y equipos de ecommerce.
0.1.16
- Nuevo: límites por categoría y por nivel del catálogo. Una categoría, o todas las de un nivel, puede tener sus propios límites (tamaño de la consulta, facetas, valores totales y valores en una faceta); un límite en blanco usa el nivel siguiente y los límites globales siguen siendo la base. Una política firmada de Integrity limita también los de categoría.
- Nuevo: límites sugeridos por categoría. El panel lista las categorías que necesitan un límite distinto, con cuántas peticiones se bloquearían ahora y con la sugerencia, y aplica una categoría con un clic. Reutiliza la regla robusta de la sugerencia global: una categoría que parece exploración automatizada nunca se afloja.
- Nuevo: Protección piloto por categoría. Con la tienda en Observación, las categorías que elijas pueden bloquear mientras el resto solo observa. Requiere una política firmada de Integrity válida (sin ella, Facet Shield solo observa, como antes) y una confirmación explícita por categoría; detener el piloto es un clic.
- Nuevo: límite de peticiones por dirección, opcional. Cuenta las peticiones facetadas por minuto y dirección (30 por minuto por defecto, entre 5 y 600); por encima del límite, en Protección, la dirección se bloquea temporalmente (una hora por defecto, hasta 24) con HTTP 429 y Retry-After, y en Observación solo se cuenta. No se guarda ninguna dirección IP: solo un hash con clave que se elimina poco después de terminar el bloqueo, por lo que no hay lista negra permanente. La dirección es la que resuelve PrestaShop (con los proxies de confianza), las direcciones y rangos de tu lista de permitidos nunca se cuentan y un problema de base de datos nunca bloquea a un cliente.
- Nuevo: buscadores verificados. En Protección, un Googlebot o Bingbot cuyo DNS inverso y directo coinciden con los servidores oficiales recibe una respuesta barata con noindex y la URL canónica de la categoría en lugar de un 403, así que la URL del filtro sale del índice y no se ejecuta SQL de facetas. Solo se consulta a quien dice ser uno de esos buscadores; el veredicto se guarda en caché (24 horas si es válido, una hora si no) y las consultas están limitadas por minuto para toda la tienda.
- Señales de falsos positivos: las peticiones que superan los límites se cuentan también cuando proceden de un cliente con sesión iniciada, de un buscador verificado o de una ráfaga rápida de diez o más por minuto, y las estadísticas muestran esas tres cifras con su proporción. Las ráfagas se miden mientras el límite por dirección está activado.
- Nuevo: alertas por correo, opcionales, con la configuración de correo de la tienda: crecimiento rápido de la caché (como máximo una vez al día), picos de peticiones bloqueadas (como máximo cada seis horas) y un resumen semanal aparte, para hasta cinco destinatarios que elijas y con un botón de correo de prueba. Sin PDF ni enlaces en el texto. Se envían desde el mantenimiento en segundo plano, nunca al servir una página a un cliente.
- Nuevo: purga automática de la caché, opcional. Cuando la caché de la búsqueda por facetas supera el tamaño que elijas, Facet Shield pide a ps_facetedsearch que vacíe su propia caché con el método que ese módulo ofrece, como máximo una vez al día, y lo anota en el registro de soporte. Si la versión instalada no tiene ese método, no se toca nada. Facet Shield sigue sin borrar nunca las tablas de otro módulo.
- Aviso de versiones vulnerables de ps_facetedsearch, a partir de una pequeña tabla incluida en el módulo (no se descarga nada): las versiones de la 3.0.0 a la 4.0.3 están afectadas por CVE-2026-54159, corregido en la 4.0.4, y el panel recomienda actualizar.
- El panel se organiza en pestañas (Resumen, Límites y categorías, Tráfico y bots, Estadísticas, Caché y mantenimiento y Configuración). El Resumen muestra solo el modo, las últimas 24 horas, una acción principal y, como máximo, una línea de alerta; solo se calcula la pestaña abierta. El panel de soporte de GO ON Agency tiene su propia pestaña, Soporte, siempre la última, y el estado de Integrity queda al final de todas las pestañas. La cabecera muestra ahora el logotipo de GO ON Agency.
- La pestaña Límites y categorías se ordena en tarjetas: límites globales, impacto de las sugerencias con botones de tamaño normal y tabla de reglas por categoría con un formulario para añadir otra. La pestaña Caché usa bloques plegables y una sola fila de estadísticas.
- Los correos de alerta muestran el logotipo de tu tienda en la cabecera (con el nombre de la tienda como texto alternativo) y un pie común con el logotipo de GO ON Agency y la firma «PrestaWard by GO ON Agency», sin enlaces ni direcciones de contacto. El logotipo del pie es un archivo del propio módulo servido desde tu tienda.
- Aspecto unificado del panel en los cuatro módulos PrestaWard: cabeceras de sección, tarjetas de formulario con bordes neutros y bloques plegables comunes, estadísticas en una sola línea y un logotipo de GO ON Agency más grande en la cabecera. El botón principal pasa a ser un color sólido de la marca, sin degradado.
- Corrige que, en PrestaShop 9, el tema de administración mostrara las pestañas subrayadas como enlaces y los títulos de sección en mayúsculas. Los estilos comunes lo neutralizan solo dentro del panel de PrestaWard, así que PrestaShop 1.7 y 8 se ven igual que antes.
- Corrige que, en PrestaShop 1.7, la hoja de estilos del módulo se descartara al registrarla con el número de versión en la dirección. Ahora se comprueba el archivo y se registra sin parámetros, de modo que el aspecto nuevo aparece en 1.7, 8 y 9.
- Corrige que, en PrestaShop 9, los formularios de acción del panel y la sincronización con Integrity comprobaran el token de seguridad con un método que PrestaShop 9 no usa y pudieran rechazarse. Ahora se valida con el servicio de PrestaShop 9; en PrestaShop 1.7 y 8 la comprobación sigue igual.
- Cuando la conexión con Integrity no se puede actualizar en ese momento, el panel muestra un único mensaje: la conexión guardada sigue siendo válida y se reintentará automáticamente. Las etiquetas de todas las pestañas están traducidas a los nueve idiomas.
- Corrige que la conexión con Integrity se degradara en el contexto «todas las tiendas»: la identidad de la instalación se lee ahora como una unidad desde el ámbito global (o desde la tienda que la guarda) en cualquier contexto, la actualización pasa al ámbito global una identidad guardada en una tienda sin regenerarla y, si no se puede leer, el estado de Integrity se deja como estaba.
- Corrige que la tabla de la pestaña Caché se desplazara unos píxeles hacia los lados en escritorio: el contenedor ocupa ahora el espacio entre sus márgenes.
- Todos los textos nuevos están disponibles en los nueve idiomas del módulo. La actualización añade una tabla pequeña y tres contadores a las estadísticas de peticiones y no activa nada por sí sola; el contrato con la API de Integrity no cambia y una política firmada válida sigue pudiendo solo endurecer los límites.
0.1.15
- Las estadísticas de peticiones dejan de crecer sin límite: cada hora, los registros por minuto de más de una hora se agrupan en uno por hora sin cambiar totales ni gráficos, y los anteriores al nuevo plazo «Conservación de estadísticas (días)» (90 por defecto, entre 30 y 365) se eliminan en lotes pequeños en segundo plano, nunca mientras se sirve una página a un cliente.
- El diagnóstico de bots ya no deja de recoger muestras al llegar a 500: conserva las más recientes y descarta las más antiguas. El ajuste «Muestras de diagnóstico a conservar» (500 por defecto, entre 50 y 5000) lo controla.
- Nuevo panel «Límites sugeridos»: a partir del tráfico registrado en modo Observación propone un valor para cada límite (tamaño de la consulta, facetas, valores totales y valores en una faceta), muestra cuántas peticiones bloquean los límites actuales y cuántas bloquearía la sugerencia, y explica la causa principal, por ejemplo qué filtro de qué categoría provoca más exceso. Un botón aplica los cuatro límites sugeridos a la tienda seleccionada sin cambiar el modo.
- Las sugerencias nunca son más estrictas que el límite por defecto, nunca relajan un límite y respetan la política firmada de Integrity cuando es más estricta. Si unas pocas categorías concentran las peticiones que superan un límite, la sugerencia se calcula sobre el resto, el panel indica qué parte del exceso procede de cuántas categorías y ese límite no se modifica al aplicar.
- El panel de la caché de la búsqueda por facetas distingue las tablas de caché de las de índices, muestra cómo ha evolucionado su tamaño en los últimos días con un aviso si crece deprisa, contempla las tiendas donde ps_facetedsearch falta o está desactivado y enlaza con su configuración nativa. Facet Shield solo lee esas tablas: nunca las modifica ni las borra.
- El panel es mucho más rápido en tiendas con mucho tráfico registrado: con más de medio millón de registros pasa de unos 20 segundos a unos pocos, y a una fracción de segundo si se vuelve a abrir en menos de diez minutos. Las cifras mostradas no cambian.
- Todos los textos nuevos están disponibles en los nueve idiomas del módulo.
- El panel de soporte y diagnóstico se coloca justo antes de la sección de Integrity, como en el resto de módulos PrestaWard, y en el contexto «todas las tiendas» ya no desaparece: indica que hay que seleccionar una tienda.
- Sincroniza con Integrity cada vez que abres el panel, con una petición en segundo plano que nunca retrasa la página y como máximo una vez por minuto y tienda.
0.1.14
- Deja de reintentar la inscripción en Integrity cuando cambia la clave de registro de la tienda y muestra un aviso claro.
- Renueva la política firmada de Integrity antes de que caduque y conserva la política vigente y sus límites si una renovación falla.
- Una política firmada de Integrity solo puede endurecer los límites configurados en la tienda, nunca relajarlos: para el tamaño, el número de facetas, de valores y de valores por faceta se aplica el menor entre tu límite y el de la política, y el modo (Observación o Protección) lo decides tú.
- Corrige la clave de política incluida para que funcione en PHP 7.1 y 7.2.
- Añade el panel de soporte de GO ON Agency en nueve idiomas, con un informe de diagnóstico descargable que no incluye datos de clientes ni se envía automáticamente. Solo lo descarga un empleado con permiso de edición y con una tienda seleccionada.
- Declara compatibilidad desde PrestaShop 1.7.7.0, la versión más antigua probada.
0.1.13
- Corrige la prueba de inscripción y las tareas del Back Office en PrestaShop 9.
- Acepta los dos formatos legítimos de URL de prueba de propiedad con validación estricta.
- Mejora el diagnóstico y los reintentos de inscripción en Integrity.
0.1.12
- La desinstalación elimina también la tabla de exclusiones por categoría y todas las claves de configuración de Integrity (fase de instalación, prueba de inscripción, credencial sellada y claves), sin dejar rastro.
- Se añaden los
index.php de protección que faltaban y la comprobación de acceso directo mediante _PS_VERSION_ en el controlador de Back Office y en los tres últimos scripts de actualización, igual que en el resto de puntos de entrada del módulo. - Adopta el sistema de diseño compartido de PrestaWard: el panel de Back Office usa la cabecera oscura común, el indicador unificado de estado (Desactivado/Observando/Protegiendo) y el panel «Monitorización GO ON», servidos desde una única hoja de estilos compartida y alojada en local.
0.1.11 — actualización de seguridad
- Las exclusiones por categoría solo evitan el análisis normal de complejidad: las firmas completas de serialización PHP se siguen analizando, registrando y bloqueando siempre en modo Protección.
- Se documenta que
ps_facetedsearch 4.0.4 o posterior es necesario para remediar CVE-2026-54159; Facet Shield sigue siendo un control de defensa en profundidad, no un sustituto de la corrección oficial.
0.1.10
- Simulador local de URL o
q, tendencia diaria basada en agregados existentes y exportaciones CSV acotadas. - Exclusiones auditables por categoría, con motivo obligatorio y borrado lógico; no se excluyen IP ni user-agent.
- La primera activación de Protección exige evidencia propia de Observación y calcula una estimación conservadora de impacto con la política candidata; sin solicitudes observadas no permite activar el bloqueo.
- Todos los directorios de producción del paquete incluyen un
index.php que termina la ejecución, incluido views/js. - La guía indica cómo reenrolar Integrity por tienda después de rotar
_COOKIE_KEY_, sin recuperar ni compartir la clave anterior. - Defensa adicional ante cabeceras completas de serialización PHP en consultas de facetas, sin bloquear valores normales que contengan texto como
O:. - Aviso configurable por tienda cuando la estimación de caché de búsqueda facetada supera el umbral definido; el módulo no borra ni actualiza nada automáticamente.
- Los reintentos y heartbeats de Integrity dejan de ejecutarse dentro del render síncrono de cualquier pantalla del Back Office: se programan mediante una petición asíncrona autenticada y limitada.
- Se elimina la consulta del resumen de eventos legado sin borrar datos históricos y se conserva el panel de actualizaciones existente como único aviso de nuevas versiones.
0.1.9
- El enrolamiento utiliza ahora el dispatcher nativo de módulos de PrestaShop y deja de depender de URL amigables, reglas de
.htaccess o cachés de rutas. - La actualización desde versiones anteriores repara de forma idempotente los hooks necesarios sin borrar políticas ni estadísticas.
- Al abrir el dashboard se comprueba automáticamente si existe una versión nueva, con una caché de seis horas y sin bloquear el Back Office si el manifiesto no responde.
- Flujo validado en PrestaShop 1.7, 8 y 9.
0.1.8
- La protección se limita a controladores reales de categoría y búsqueda, evitando bloquear parámetros
q ajenos a las facetas. - Las solicitudes
HEAD bloqueadas devuelven únicamente cabeceras, sin cuerpo. - El diagnóstico identifica el agente como declarado y explica correctamente la muestra abreviada de user-agent que se conserva de forma opcional.
- Integrity se presenta con un estado mínimo de conexión y sincronización, sin detalles internos que confundan al usuario.
- Compatibilidad funcional validada en PrestaShop 1.7, 8 y 9.
0.1.7
- Heartbeat automático sin cron: el tráfico de la tienda activa una sonda local limitada y el servidor renueva la presencia ante Integrity API sin exponer credenciales al navegador.
- Bloqueo atómico por tienda, intervalo de seis horas y espera de quince minutos tras fallos para evitar envíos duplicados.
- La sincronización manual de Integrity también renueva el heartbeat.
- Compatibilidad validada en PrestaShop 1.7, 8 y 9.
0.1.6
- Heartbeat autenticado, reintentos automáticos y diagnóstico detallado de conexión con Integrity API.
- Diagnóstico opcional también en Observación, con identificación del agente, filtros por bot y motivo, paginación y muestra acotada de la combinación de facetas.
- Retención controlada por el administrador: número de muestras, espacio estimado y borrado manual desde el Back Office.
- Indicadores visuales y de solo lectura sobre tamaño, registros estimados y tablas de la caché de facetas.
- Interfaz reorganizada: modos y activación de Protección bajo «Qué hace», secciones delimitadas e Integrity API relegada al final.
- Sin IP, cookies ni URL completas; textos disponibles en nueve idiomas.
- Instalación, bloqueo, diagnóstico, caché, desinstalación y reinstalación verificados en PrestaShop 1.7, 8 y 9.
0.1.5
- Inscripción automática y no bloqueante en Integrity API mediante prueba de control de la tienda.
- La instalación no requiere cuentas, claves API ni pasos de registro manual.
- Políticas firmadas verificadas con anclas de confianza incluidas en la versión.
0.1.4
- Histogramas de complejidad y conteo atómico para todas las solicitudes analizadas.
- Límites de valores por faceta, solicitudes malformadas y contexto de petición acotado.
- Estado de Observación, inicio del periodo estadístico y restablecimiento protegido por tienda.
- Motivos y estadísticas traducidos.
0.1.3
- Indicadores de solicitudes analizadas, dentro de límite, excesos y bloqueos reales.
- Agregados por tienda y minuto sin IP, URL, agente de usuario ni valores seleccionados.
- Selector de modo accesible y shell visual PrestaWard para escritorio y móvil.
0.1.2
- Identidad de instalación y tienda preparada para Integrity API.
- Política firmada con último estado válido por tienda y retorno seguro a Observación.
- Estado de conexión y reintento manual desde Back Office, sin llamadas desde Front Office.