El problema: tu firewall de red no ve esto
Un firewall de red tradicional (como el de tu router o servidor) funciona en las capas 3 y 4 del modelo OSI. Controla qué IPs pueden acceder a qué puertos. Pero cuando alguien accede a tu sitio web y envia un payload malicioso en el campo de login... el firewall de red no tiene forma de saberlo.
En 2025, el 70% de los ataques exitosos fueron a nivel aplicación web, no a nivel red. La víctima tenía un firewall perimetral de primera línea — que no sirvió de nada.
Ahí entra el Web Application Firewall (WAF). A diferencia de un firewall tradicional, inspecciona el contenido de las request HTTP: headers, cookies, parámetros URL, body de POST. Detecta y bloquea ataques que a nivel de red parecen tráfico completamente normal.
Las 10 amenazas que el WAF bloquea (OWASP Top 10)
La OWASP Foundation (Open Web Application Security Project) mantiene una lista de las vulnerabilidades web más críticas. Nuestro WAF viene pre-configurado con reglas para todas:
| Amenaza | Qué hace | Cómo la bloqueamos |
|---|---|---|
| SQL Injection | Inyecta código SQL malicioso en inputs para robar o borrar tu base de datos | Escaneo de patrones SQL, sanitización de inputs |
| XSS (Cross-Site Scripting) | Inserta JavaScript malicioso en tu página que roba cookies de otros usuarios | Encoding de output, validación de caracteres peligrosos |
| CSRF | Hace que el navegador de la víctima envíe requests no deseados a tu sitio | Token CSRF en formularios, validación de referer |
| Path Traversal | Manipula rutas de archivo para acceder a archivos fuera de lo permitido | Normalización de rutas, denegación de patrones "../" |
| Command Injection | Injecta comandos del sistema operativo a través de inputs vulnerables | Denegación de caracteres shell (|, ;, &, $) |
¿Cómo funciona un WAF en la práctica?
Hay tres modos principales de operación:
1. Modo Negative Security (detección de anomalías)
El WAF conoce los patrones de ataques conocidos y los bloquea directamente. "Este request tiene un UNION SELECT injectable" → blocked. "Este input contiene