Yanıtlar:
Hayır, HTTP herhangi bir sınır tanımlamaz. Ancak, çoğu web sunucusu kabul ettikleri üstbilgilerin boyutunu sınırlar. Örneğin Apache'de varsayılan sınır 8 KB, IIS'de 16 KB'dir . 413 Entity Too Large
Üstbilgi boyutu bu sınırı aşarsa sunucu hata döndürür .
İlgili soru: Bir kullanıcı aracısı dizesi ne kadar büyük olabilir?
Yukarıda vartec'in söylediği gibi, HTTP spesifikasyonu bir sınır tanımlamaz, ancak birçok sunucu varsayılan olarak yapar. Bu, pratik olarak, alt sınırın 8K olduğu anlamına gelir . Çoğu sunucu için bu sınır , istek satırı ve TÜM başlık alanlarının toplamı için geçerlidir (bu nedenle çerezlerinizi kısa tutun).
Nginx'in varsayılan olarak sistem sayfası boyutunu kullandığını ve çoğu sistemde 4K olduğunu belirtmek gerekir. Bu küçük programla kontrol edebilirsiniz:
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;
}
Derleyin ve gcc -o pagesize pagesize.c
çalıştırın ./pagesize
. Linode'den ubuntu sunucum bana cevabın 4k olduğunu bildiriyor.
LimitRequestLine
ve LimitRequestFieldSize
uygulanır ... "toplamı ..." değil
HTTP, Bölüm 2.5'te açıklandığı gibi her başlık alanının uzunluğuna veya bir bütün olarak başlık bölümünün uzunluğuna önceden tanımlanmış bir sınır koymaz. Uygulamada, genellikle belirli alan semantiğine bağlı olarak, tek tek başlık alanı uzunluğu ile ilgili çeşitli geçici sınırlamalar bulunur.
HTTP Üstbilgisi değerleri sunucu uygulamaları tarafından kısıtlanmıştır. Http belirtimi başlık boyutunu kısıtlamaz.
Bir istek üstbilgisi alanı veya işlemek istediklerinden daha büyük bir alan kümesi alan bir sunucu, uygun bir 4xx (İstemci Hatası) durum koduyla yanıt vermelidir ZORUNLU. Bu tür başlık alanlarını göz ardı etmek, sunucunun kaçakçılık saldırıları talep etme hassasiyetini artıracaktır (Bölüm 9.5).
Çoğu sunucu 413 Entity Too Large
bu olduğunda veya 4xx hatası döndürür .
Alan semantiği, bırakılan değer (ler) mesaj çerçevesini veya yanıt semantiğini değiştirmeden güvenli bir şekilde göz ardı edilebilecek şekildeyse, istemci, istemciden daha büyük alınan alınan başlık alanlarını atabilir veya kesebilir.
Sınırlandırılmamış HTTP üstbilgisi boyutu, sunucuyu saldırılara maruz bırakır ve organik trafik sunma kapasitesini düşürebilir.
Ayrıca, bazı durumlarda, çok sayıda başlık olması durumunda 502/400'ün nedeninin boyut bakımından çok sayıda başlıktan kaynaklanabileceğini buldum. dokümanlardan
tune.http.maxhdr Bir istekteki maksimum başlık sayısını ayarlar. Bir istek, bu değerden (ilk satır dahil) daha fazla sayıda başlıkla geldiğinde, "400 Hatalı İstek" durum kodu ile reddedilir. Benzer şekilde, çok büyük yanıtlar "502 Bozuk Ağ Geçidi" ile engellenir. Varsayılan değer 101'dir ve yaygın olarak kullanılan Apache sunucusunun aynı sınırı kullandığını düşünürsek tüm kullanımlar için yeterlidir. Bir buggy uygulamasının düzeltildiği zamana kadar geçici olarak çalışmasına izin vermek için bu sınırı daha ileriye taşımak yararlı olabilir. Her yeni başlığın her oturum için 32 bit bellek tükettiğini unutmayın, bu nedenle bu sınırı çok yükseğe itmeyin.
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#3.2-tune.http.maxhdr