WAF (Firewall de aplicaciones web) es un tipo de firewall que supervisa, filtra o bloquea el tráfico HTTP hacia y desde una aplicación web. Se diferencia de un firewall normal en que puede filtrar el contenido de aplicaciones web específicas, mientras que un firewall de red protege el tráfico entre los servidores.

Al inspeccionar el tráfico HTTP, un WAF protege a las aplicaciones web contra ataques como los de inyección SQL, XSS y falsificación de petición de sitios cruzados (CSRF).

El WAF se instala por delante de las aplicaciones web y analiza el tráfico bidireccional que usa el protocolo HTTP y HTTPS (web), detectando y bloqueando tráfico malicioso. Se trata de una solución de seguridad a nivel de aplicación que, desde un punto de vista técnico, no depende de la propia aplicación.

Un WAF aplica un conjunto de reglas en las conversaciones HTTP para proteger a las aplicaciones de ataques comunes como son cross-site scripting (XSS) e inyección de SQL. Mientras que los proxies protegen a clientes, los WAF protegen a los servidores. Se despliegan para proteger una aplicación web específica o un conjunto de aplicaciones web.

Se pueden descubrir vulnerabilidades previamente desconocidas con pruebas de penetración o con un escáner de vulnerabilidades. Un escáner de vulnerabilidad de aplicaciones web, también conocido como escáner de seguridad de aplicaciones web es un programa automatizado que examina las aplicaciones web en busca de posibles vulnerabilidades de seguridad. También busca errores de codificación de software.

Un WAF no es una solución de seguridad definitiva. Sin embargo es una solución que debe ser utilizada junto con otras soluciones de seguridad como firewalls de red y sistemas de prevención de intrusos, para proporcionar una estrategia de defensa holística.

Los WAF normalmente siguen un modelo de seguridad positivo, un modelo de seguridad negativo o una combinación de los dos. Utiliza una combinación de lógica basada en reglas, análisis sintáctico y firmas para detectar y prevenir ataques como los de cross-site scripting o inyección de SQL.