que personalizadas para modificar mdn length headers ejemplo dummies content cabeceras cabecera http http-headers

personalizadas - Máximo en los valores de cabecera http?



mozilla http headers (4)

HTTP no coloca un límite predefinido en la longitud de cada campo de encabezado o en la longitud de la sección de encabezado en su totalidad, como se describe en la Sección 2.5. En la práctica, se encuentran varias limitaciones ad hoc en la longitud del campo del encabezado individual, a menudo dependiendo de la semántica del campo específico.

Los valores del encabezado HTTP están restringidos por las implementaciones del servidor. La especificación HTTP no restringe el tamaño del encabezado.

Un servidor que recibe un campo de encabezado de solicitud, o un conjunto de campos, más grande de lo que desea procesar DEBE responder con un código de estado 4xx (error de cliente) adecuado. Ignorar estos campos de encabezado aumentaría la vulnerabilidad del servidor para solicitar ataques de contrabando (Sección 9.5).

La mayoría de los servidores devolverán 413 Entity Too Large o error 4xx apropiado cuando esto suceda.

Un cliente PUEDE descartar o truncar los campos de encabezado recibidos que son más grandes de lo que el cliente desea procesar si la semántica del campo es tal que los valores descartados pueden ignorarse de manera segura sin cambiar la estructura del mensaje o la semántica de respuesta.

El tamaño del encabezado HTTP no cubierto mantiene al servidor expuesto a los ataques y puede reducir su capacidad para atender tráfico orgánico.

Source

¿Hay un tamaño máximo permitido para los encabezados HTTP? Si es así, ¿qué es? Si no, ¿es esto algo específico del servidor o es el estándar aceptado para permitir encabezados de cualquier tamaño?


Como dice vartec arriba, la especificación de HTTP no define un límite, sin embargo muchos servidores lo hacen de manera predeterminada. Esto significa que, prácticamente hablando, el límite inferior es 8K . Para la mayoría de los servidores, este límite se aplica a la suma de la línea de solicitud y TODOS los campos de encabezado (así que mantenga sus cookies cortas).

  • Apache 2.0 , 2.2 : 8K
  • nginx : 4K - 8K
  • IIS: varía según la versión , 8K - 16K
  • Tomcat: varía según la versión , 8K - 48K (?!)

Vale la pena señalar que nginx usa el tamaño de página del sistema por defecto, que es 4K en la mayoría de los sistemas. Puedes consultar con este pequeño programa:

pagesize.c:

#include <unistd.h> #include <stdio.h> int main() { int pageSize = getpagesize(); printf("Page size on your system = %i bytes/n", pageSize); return 0; }

Compile con gcc -o pagesize pagesize.c luego ejecute ./pagesize . Mi servidor ubuntu de Linode me informa obedientemente que la respuesta es 4k.


También encontré que, en algunos casos, la razón de 502/400 en el caso de muchos encabezados podría deberse a un gran número de encabezados sin tener en cuenta el tamaño. de los documentos

tune.http.maxhdr Establece el número máximo de encabezados en una solicitud. Cuando una solicitud viene con un número de encabezados mayor que este valor (incluida la primera línea), se rechaza con un código de estado "400 Solicitud incorrecta". Del mismo modo, las respuestas demasiado grandes se bloquean con "502 Bad Gateway". El valor predeterminado es 101, que es suficiente para todos los usos, teniendo en cuenta que el servidor Apache ampliamente implementado utiliza el mismo límite. Puede ser útil ampliar este límite para permitir que una aplicación con errores funcione temporalmente en el momento en que se solucione. Tenga en cuenta que cada nuevo encabezado consume 32 bits de memoria para cada sesión, así que no presione este límite demasiado alto.

https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#3.2-tune.http.maxhdr