Avisos
Vaciar todo

[Resuelto] Ayuda con protección a nivel de servidor contra abuso de "add-to-cart" en WooCommerce

6 Respuestas
2 Usuarios
0 Reacciones
9 Visitas
Respuestas: 10
Eminent Member
Topic starter
 

Hola,

Gestiono 7 tiendas WooCommerce (mismo theme Botiga, plugins similares) alojadas con vosotros, con Varnish activo. El equipo de tickets de hosting me derivó aquí para la implementación concreta de una corrección a nivel de aplicación/servidor.

EL PROBLEMA:
He identificado un patrón de abuso conocido en la comunidad WooCommerce: peticiones GET al parámetro nativo "add-to-cart" (añade productos al carrito sin interacción real, crea sesión y escribe en BD, no cacheable por Varnish), en mi caso combinadas con un segundo parámetro "ppp" (productos por página) sin validar, que aceptaba valores como -1 y generaba páginas de hasta 1,9 MB de golpe. El tráfico viene de decenas de IPs de países dispersos, todas con idéntica huella de navegador, sugiriendo una red de bots con proxies rotativos.

LO QUE YA HE IMPLEMENTADO (funciona bien):
He creado un MU-plugin (wp-content/mu-plugins/) en las 7 tiendas que rechaza inmediatamente cualquier petición con "ppp" fuera de un rango de 1-100:

Esto ha eliminado por completo las páginas de 1,9 MB. Confirmado en los logs de las 7 tiendas desde hace varios días.

LO QUE SIGUE SIN RESOLVERSE:
Aunque ya no se generan páginas gigantes, el VOLUMEN de peticiones "add-to-cart" sigue llegando (ahora más baratas cada una, pero muchas seguidas), y sigue saturando las conexiones de la base de datos. Evidencia de esta madrugada:

[26-Aug-2026 00:40:10 a 00:40:22 UTC] 30 líneas de:
PHP Warning: mysqli_real_connect(): (HY000/1203): User [usuario] already
has more than 'max_user_connections' active connections

Esto se repite en varias de mis 7 tiendas, siempre en horas de madrugada con tráfico mínimo esperado.

LO QUE NECESITO:
¿Podéis ayudarme a implementar, vía .htaccess o alguna otra solución a nivel de servidor, un bloqueo o limitación de frecuencia específico para peticiones que contengan "add-to-cart"? Idealmente:

1. Bloquear/rechazar peticiones que combinen "add-to-cart" con un "ppp" fuera de rango (ya cubierto en parte por mi MU-plugin, pero mejor si se corta antes de llegar a PHP).
2. Si es viable, limitar la frecuencia de peticiones GET con "add-to-cart" por IP en un periodo corto.

Esto no debería afectar a rastreadores legítimos (Google, Bing, Meta, bots de IA), ya que ninguno necesita ejecutar una acción de carrito para indexar correctamente mis páginas de producto/categoría.

¿Podéis orientarme sobre la mejor forma de implementar esto, dado que tengo 7 dominios con la misma configuración?

Gracias de antemano.

Un saludo,

Contenido solo visible a usuarios registrados


 
Respondido : 27/08/2026 2:04 pm
Karen Rios
Respuestas: 20416
Illustrious Member Admin
 

Hola Alejandro, 

En este caso lo que puedes probar es bloquear desde el .htaccess las peticiones que combinen add-to-cart con un valor ppp fuera del rango 1-100, por ejemplo, puedes probar con el código que te adjunto en el archivo. 

De esta forma si una petición de este tipo llega a Apache este las bloquea antes que Wordpress tenga que procesarlas. 

Sobre el bloque de IP esto no es algo que puedas controlar con el htaccess, sin embargo no te recomiendo estas solicitudes que contengan add-to-cart, toma en cuenta que esto es una funcionalidad nativa de WooCommerce y bloquearlo puede generar que el carrito no funcione de forma correcta. 

Puedes probar esto y comentarnos como va todo.

Un saludo.


 
Respondido : 27/08/2026 2:33 pm
Respuestas: 10
Eminent Member
Topic starter
 

Hola de nuevo,

Os confirmo que la regla de .htaccess funciona perfectamente. La he aplicado en mis 7 tiendas (adaptándola a cada dominio), y en todas he verificado que:

- Las peticiones con add-to-cart + ppp fuera de rango reciben correctamente un 403.
- El carrito y el proceso de compra normal de mis clientes siguen funcionando sin ningún problema.

Muchas gracias por la ayuda, ha sido justo lo que necesitaba.

Una última pregunta relacionada: aunque esta regla ha reducido el problema, sigo viendo ocasionalmente en mis logs avisos de "max_user_connections" (conexiones de base de datos agotadas), probablemente porque parte del tráfico automático sigue llegando con un "ppp" válido (por lo que la regla no lo bloquea, con razón, ya que sería indistinguible de un cliente real).

¿Sería posible aumentar el límite de conexiones simultáneas ('max_user_connections') de mi usuario de base de datos? Entiendo que esto no detendría el tráfico en sí, pero me daría más margen antes de que salte el error, mientras sigo explorando cómo reducir el problema de fondo.

Gracias de nuevo.

Un saludo


 
Respondido : 28/08/2026 9:07 am
Karen Rios
Respuestas: 20416
Illustrious Member Admin
 

Hola Alejandro, 

Enhorabuena ha funcionado como necesitas, es un placer para nosotros siempre poder ayudarte. 

Sobre lo que nos comentas de max_user_connections en este caso no te recomiendo el aumento del limte como una solución principal, esto solo darias mas margen antes de alcanzar nuevamente el maximo si continua el mismo volumen de peticiones. 

Lo que puedes hacer es enviar un ticket a soporte para que revisen si efecticamente ese limite se este alcanzando por estas solicitudes automaticas y si es asi revisar si deben aplicar alguna regla adicional a nivel de servidor, firewall o WAF para reducir este tipo de trafico. 

Un saludo. 


 
Respondido : 28/08/2026 12:30 pm
Respuestas: 10
Eminent Member
Topic starter
 

Perfecto, muchas gracias 🙂 


 
Respondido : 29/08/2026 6:37 am
Karen Rios
Respuestas: 20416
Illustrious Member Admin
 

Hola Alejandro, 

Gracias a ti, es un placer para nosotros siempre poder ayudarte 😊 .

No dudes en escribirnos si tienes cualquier otra consulta. 

Un saludo. 


 
Respondido : 31/08/2026 1:32 pm