Tu limitador de peticiones no es un control de seguridad

Un bot extrajo todos los datos de un pasaporte de mi API en cuestión de minutos.

Mi limitador de peticiones no lo detuvo.

El límite era de 3.000 llamadas al mes. Un escaneo completo de un pasaporte solo requiere 195 llamadas. El bot se mantuvo por debajo de mi límite y lo robó todo.

La limitación de tasa protege los costes de tu infraestructura. No protege tus datos.

Si mezclas estas dos ideas, sufrirás una fuga de datos.

Los limitadores de peticiones se hacen una sola pregunta: ¿Me está costando demasiado dinero este cliente en este momento?

Los scrapers se mantienen por debajo de esa línea a propósito. Mi scraper funcionaba a 25 peticiones por minuto. Eso es una carga mínima. Solo necesitaría 40.000 llamadas para copiar todo mi conjunto de datos. Si un hacker utiliza muchas cuentas gratuitas, ningún límite de volumen lo detectará.

Deja de fijarte en el volumen. Fíjate en la identidad, la cobertura y el patrón.

Cometí dos errores. Primero, no registré la IP de origen. Un hacker simplemente podría registrarse de nuevo de forma gratuita.

Primero, arregla tus logs. Añade columnas de IP y país a tu base de datos. Utiliza la IP real del cliente de Cloudflare en lugar de la dirección remota. Esto te permite bloquear atacantes en la capa de red.

Segundo, cambia tus límites.

No te limites a restringir las peticiones por mes. Limita cuántos destinos diferentes puede consultar un pasaporte al día. Un usuario real consulta unos pocos destinos. Un scraper intenta consultarlos todos.

Un barrido de datos tiene una firma específica:

  • Es denso.
  • Es secuencial.
  • Cubre todo lo relacionado con una única fuente.

Puedes detectar este patrón observando una ventana deslizante de actividad. Si un pasaporte accede a demasiados destinos en poco tiempo, márcalo. Limita el flujo de esa clave o bloquéala inmediatamente.

Ahora reaccionas al comportamiento en lugar de limitarte a contar números.

Divide tu estrategia en dos tareas:

  1. Limitador de peticiones: Protege tu dinero. Utiliza límites de volumen por clave.
  2. Defensa contra la extracción: Protege tus datos. Utiliza la identidad, la cobertura y la cadencia.

Si solo tienes un limitador de peticiones, tienes una salvaguarda para la facturación. No tienes seguridad.

Fuente: https://dev.to/mathis_higuinen_6db9b244c/your-rate-limiter-is-not-a-security-control-4b3f