cloudflare --analizar --facetas
461.000 peticiones de bots al día contra los filtros de una tienda
La tienda se caía a ratos. No era tráfico real: era un ataque dirigido contra los filtros de una categoría, pensado para que nada se pudiera cachear.
100%
del ataque bloqueado por la regla propuesta
Comprobado contra las 461.000 peticiones del ataque y 2.100 filtros reales
El síntoma
Algunas categorías tardaban más de 2 minutos en cargar y otras devolvían un error 504. Parecía un problema de servidor.
Lo que había detrás
En Cloudflare salió el patrón:
- 461.000 peticiones en 24 horas con filtros de facetas contra una sola categoría.
- Cada petición combinaba marcas, disponibilidad y orden al azar, así que ninguna se repetía y ninguna se podía cachear. Cada una obligaba al servidor a recalcular la categoría entera.
- Venían de miles de IPs de todo el mundo, ninguna con más de 400 peticiones al día. Los límites por IP no saltaban nunca.
- Cloudflare ya las marcaba como bots, pero la configuración las dejaba pasar.
Las reglas que había no servían. Una solo cubría seis rutas y la atacada no estaba. Otra, pensada para permitir la pasarela de pago, eximía de todas las protecciones a toda la red de Telefónica: un 9 % del tráfico se saltaba cualquier regla.
La solución
Revisé el JavaScript de los filtros de la tienda: siempre envía una cabecera concreta en sus peticiones. Ninguna de las 461.000 peticiones del ataque la llevaba.
| medida | efecto sobre el ataque | efecto en clientes |
|---|---|---|
| Desafío a los filtros sin la cabecera de la tienda | corta el 100 % | ninguno (2.100 de 2.100 filtros reales la llevan) |
| Bloquear el tráfico «definitely automated» | 249.000 peticiones/día en el borde | ninguno; pasarelas y ERP ya exentos |
| Corregir la regla de la pasarela de pago | se cierra el agujero del 9 % | ninguno |
| Ampliar la regla de 120 caracteres | parcial | sí rompe filtros reales: descartada |
Cada medida iba con su impacto en clientes comprobado contra el código y el tráfico real. También propuse no aplicar una de ellas porque rompía la tienda, aunque paraba parte del ataque.