Saltar al contenido
AIM Desarrollo y Automatizaciones

Seguridad en acción

Lo que pasa cuando alguien inunda tu sitio de peticiones: las primeras pasan y el resto se frena.

En vivo. Usa la API de AIM.

Como lo ve tu cliente

Un ejemplo de la vida real: Imagina el formulario de citas de un consultorio. Un bot envía mensajes falsos sin parar: después de unos pocos el sitio lo frena, y los pacientes siguen escribiendo sin problema.

Por dentro

Qué hace, en términos técnicos

Envía 15 peticiones seguidas a la API y mira cómo el límite de tasa deja pasar 10 y frena el resto con un 429, y revisa las cabeceras de seguridad reales que protegen este sitio.

Tecnologías
  • Hono
  • Postgres
  • Drizzle
  • Preact

Arquitectura

  1. 1.Tu navegador

    Envía las 15 peticiones en orden y lee de cada respuesta el estado y las cabeceras RateLimit y Retry-After.

  2. 2.API de AIM en Cloudflare (Hono)

    Cuenta las peticiones de cada visitante con una huella de su IP, nunca la IP, y agrupa IPv6 por red /64.

  3. 3.Postgres en Neon (Drizzle)

    Lleva la cuenta en una ventana móvil de un minuto. Pasado el límite, la API responde 429 con Retry-After.

  4. 4.Cabeceras del sitio

    HSTS, X-Frame-Options, Permissions-Policy y las demás llegan con cada página. La CSP va en una etiqueta meta, con hashes.

En cifras

peticiones por minuto por conexión
10
peticiones que envía la demo
15
cabeceras de seguridad revisadas en vivo
7

¿Qué pasa si alguien inunda tu sitio?

Un bot inunda el formulario

Tu navegador envía 15 peticiones reales a la API, una tras otra, como lo haría el bot.

Qué pasó con cada petición
Pasaron
0
Frenadas
0

Una persona que usa tu sitio nunca llega al límite. Un bot sí: después de 10 peticiones en un minuto, el sitio deja de atenderlo hasta que se libera el cupo.

Mientras tanto, un paciente

Escribe desde su propia conexión.

Ilustración
Su mensaje
Quisiera una cita la próxima semana, en la tarde.

Su conexión lleva su propia cuenta: lo que haga el bot no la toca.

El límite se cuenta por conexión, con una huella de la IP y nunca la IP: frenar al bot no afecta a nadie más.

Esta parte es una ilustración y no envía nada: desde tu navegador, el paciente compartiría la conexión con el bot y el límite también lo frenaría.

Límite de tasa en vivo

La API de este sitio acepta hasta 10 peticiones por minuto desde una misma conexión. Envía 15, una detrás de otra, y mira en qué momento te frena.

Por qué importa

Sin un límite, un programa puede probar miles de contraseñas por minuto hasta dar con la tuya (fuerza bruta), o llenar un formulario con mensajes basura hasta tumbar el servicio. Frenar cada conexión después de unas cuantas peticiones corta esos abusos sin molestar a quien usa el sitio con normalidad.

En el OWASP Top 10 de 2021 esto cae en A04, diseño inseguro, y en A07, fallas de identificación y autenticación. En este sitio también tienen su propio límite el formulario de contacto, el inicio de sesión del panel y el asistente.

El conteo vive en Postgres y se lleva por conexión: la API guarda una huella irreversible de tu IP, nunca la IP.

Las protecciones que tu navegador recibió de este sitioCabeceras que protegen este sitio

Con cada página, el servidor manda instrucciones de seguridad que tu navegador obedece. Estas llegaron en la respuesta real que tu navegador acaba de recibir.Con cada página, el servidor manda instrucciones de seguridad que tu navegador obedece: las cabeceras HTTP. Esta lista sale de la respuesta real que tu navegador acaba de recibir al pedir la portada del sitio, con los valores tal como llegaron.

Revisando las cabeceras de este sitio…

¿Lo quieres para tu negocio?

Esto es parte de lo que construyo en el servicio de páginas web. Mira qué incluye o calcula un presupuesto de referencia para tu caso.

¿Te interesa cómo está hecho? Míralo por dentro

Cómo funciona

El límite es real: la API de AIM en Cloudflare acepta 10 peticiones por minuto por conexión, lleva la cuenta en Postgres con una huella de la IP (nunca la IP) y responde con las cabeceras RateLimit y Retry-After. Frena la fuerza bruta y el abuso de formularios, que el OWASP Top 10 de 2021 ubica en A04 (diseño inseguro) y A07 (fallas de identificación y autenticación). Las cabeceras se leen en vivo desde la respuesta de la portada: HTTPS obligatorio, bloqueo de marcos, política de permisos y las demás que manda el sitio, cada una con el ataque que frena y su categoría OWASP.