Quiero saber cuáles son las principales diferencias entre los ataques de inundación HTTP GET y POST y las estrategias de mitigación para ambos.
Busqué mucho, pero realmente no puedo encontrar buenos artículos ni ejemplos sobre estos ataques.
Cuando un cliente HTTP (por ejemplo, un navegador web) habla con un servidor HTTP (un servidor web), envía solicitudes que pueden ser de varios tipos, las dos principales son GET
y POST
. Una solicitud GET
es lo que se usa para los "enlaces normales", incluidas las imágenes; estas solicitudes están destinadas a recuperar un dato estático, la URL que apunta a ese dato. Cuando ingresas una URL en la barra de URL, también se realiza un GET
.
POST
se utilizan con los formularios. Una solicitud POST
incluye parámetros, que generalmente se toman de los campos de entrada en la misma página.
Al inundar, el atacante desea sumergir el servidor de destino en muchas solicitudes, para saturar sus recursos informáticos. La inundación funciona mejor cuando el servidor asigna muchos recursos en respuesta a una sola solicitud. Dado que las solicitudes de POST
incluyen parámetros, generalmente activan un procesamiento relativamente complejo en el servidor (por ejemplo, accesos a bases de datos), que son más costosos para el servidor que servir un GET
mucho más simple. Por lo tanto, la inundación basada en POST
tiende a ser más efectiva que la inundación basada en GET
(se requieren menos solicitudes para ahogar el servidor si las solicitudes son POST
). Por otro lado, GET
solicita que sea mucho más común, a menudo es mucho más fácil para el atacante reclutar (involuntariamente) ayuda en su esfuerzo de inundación cuando GET
-flooding (como dice @Rory, solo se necesita un enlace para una imagen en línea en un sitio popular, y todos los que navegan por ese sitio envían automáticamente una solicitud GET
al servidor de destino).
(Por supuesto, cualquier sitio web en particular podría hacer mucho procesamiento complejo en algunas solicitudes específicas de GET
; solo estoy discutiendo el comportamiento de promedio aquí)
Un problema interesante con la inundación de HTTP (para cualquiera de los tipos de solicitud HTTP) es que tienden a anular muchos IPS (servicios de protección contra intrusiones) porque la mayoría de ellos tiende a concentrarse en los ataques de denegación de servicio basados en TCP. Puede escribir reglas IPS para detectar ataques de inundación HTTP, pero uno tiene que ser muy cuidadoso porque en algunos casos es difícil distinguirlos del tráfico real.
lea este artículo de wiki sobre las diversas formas de métodos de solicitud HTTP. La mayoría de los desarrolladores con los que me he cruzado no se dan cuenta de que existen otros métodos distintos a POST y GET.
Realmente, la única diferencia entre estos dos será el método HTTP utilizado (GET vs POST). En términos de facilidad de ataque, hay más escenarios en los que un ataque basado en GET sería práctico (por ejemplo, incrustar una imagen en línea en un sitio popular que enlaza con el sitio de destino podría causar un DoS), pero aparte de eso, si busca genéricos artículos sobre ataques DoS HTTP que probablemente se apliquen a ambos por igual.
Lea otras preguntas en las etiquetas attacks denial-of-service http flooding