¿Cuál es el riesgo de seguridad de habilitar la conexión persistente (HTTP Keep-Alive)?

5

Según tengo entendido, el encabezado HTTP Keep-Alive determina si el próximo paquete de comunicación se enviará a través de la misma conexión o no, es decir, si la aplicación web se ejecuta sobre SSL y si está habilitada la función Keep-Alive, por ejemplo 60 segundos, luego:

-cualquier comunicación cliente-servidor se realizará a través de la misma conexión
-cualquier comunicación cliente-servidor después de 60 segundos de inactividad reiniciará el protocolo de enlace SSL y luego procederá con solicitudes y respuestas.

Además, ¿cómo se conecta esto al tiempo de espera de inactividad de la sesión de un usuario?

    
pregunta Hrishabh Sobti 14.01.2017 - 21:42
fuente

2 respuestas

1
  

si el próximo paquete de comunicación se enviará a través de la misma conexión o no

Casi pero no exactamente. No hay "paquete" en este nivel de comunicación, solo un flujo de datos. HTTP-Keep-alive permitirá múltiples solicitudes HTTP a través de la misma conexión TCP / TLS en lugar de solo una, ya que no cierra la conexión inmediatamente después de la respuesta HTTP, sino que la mantiene abierta para más solicitudes.

  

El encabezado HTTP Keep-Alive dicta

No, no dicta nada. Al agregar Connection: keep-alive a la consulta (o implícitamente al usar HTTP / 1.1 en lugar de HTTP / 1.0), el cliente le pide al servidor cortésmente que no cierre la conexión TCP después de que se realice la respuesta. El servidor puede estar de acuerdo o no.

  

cualquier comunicación cliente-servidor se realizará a través de la misma conexión

No necesariamente. Puede haber varias conexiones TCP / TLS abiertas en paralelo entre el navegador y el servidor.

  

cualquier comunicación cliente-servidor después de 60 segundos de inactividad reiniciará el protocolo de enlace SSL y luego procederá con las solicitudes y respuestas.

El cliente y el servidor pueden decidir cerrar la conexión inactiva (es decir, sin respuesta sobresaliente) en cualquier momento y ambos tienen sus configuraciones y temporizadores independientes. Si la conexión está cerrada y el cliente desea realizar una nueva solicitud, necesita crear una nueva conexión TCP y para HTTPS necesita reanudar una sesión SSL existente sobre esta conexión TCP o hacer un protocolo de enlace TLS completo para un nuevo Sesión SSL.

  

Además, ¿cómo se conecta esto al tiempo de espera de inactividad de la sesión de un usuario?

Esto no tiene relación alguna. Las sesiones de usuario se gestionan a nivel de aplicación. HTTP keep alive se administra a nivel de protocolo HTTP. Puede tener varias sesiones de usuario dentro de una sola conexión TCP (con múltiples solicitudes HTTP) y también puede mantener una sesión de usuario a través de múltiples conexiones TCP (una después de la otra y también conexiones paralelas).

  

¿Cuál es el riesgo de seguridad de habilitar la conexión persistente (HTTP Keep-Alive)?

No hay ninguno.

    
respondido por el Steffen Ullrich 14.01.2017 - 22:24
fuente
-1

La única razón por la que puedo pensar que es malo es que se usa en ataques DDoS.

  

Slowloris es un tipo de herramienta de ataque de denegación de servicio inventada por Robert "RSnake" Hansen que permite que una sola máquina elimine el servidor web de otra máquina con un ancho de banda mínimo y efectos secundarios en servicios y puertos no relacionados.

     

Slowloris intenta mantener abiertas muchas conexiones con el servidor web de destino   y manténgalos abiertos el mayor tiempo posible. Lo logra por   abrir conexiones al servidor web de destino y enviar un parcial   solicitud. Periódicamente, enviará encabezados HTTP posteriores, añadiendo   a, pero nunca completando, la solicitud. Los servidores afectados mantendrán estos   Conexiones abiertas, llenando su máximo conjunto de conexiones concurrentes,   eventualmente negando intentos de conexión adicionales de los clientes.

Fuente: enlace

Similar al ataque DDoS anterior, un atacante podría abrir tantas conexiones como sea posible, dependiendo del tamaño de la botnet, puede ser un número muy grande y podría bloquear las conexiones de usuarios reales.

    
respondido por el ChrisK 14.01.2017 - 23:37
fuente

Lea otras preguntas en las etiquetas