TsgcHTTPServer › Özellikler › StrictRequestParsing
İstek kaçırma (request-smuggling) saldırılarında kullanılan belirsiz HTTP isteklerini reddeder ve daha katı chunked-encoding doğrulaması uygular.
property StrictRequestParsing: Boolean read GetStrictRequestParsing write SetStrictRequestParsing;
True
StrictRequestParsing etkinleştirildiğinde, sunucu hem bir Content-Length hem de bir Transfer-Encoding başlığı taşıyan herhangi bir HTTP isteğini HTTP durum kodu 400 (Bad Request) ile reddeder. Bu kombinasyon, istek gövdesinin nerede bittiği konusunda belirsizdir ve bir ön uç proxy'si ile arka uç sunucusunun istek sınırları konusunda anlaşamadığı ve bir saldırganın proxy'yi atlatarak ikinci bir isteği kaçırdığı HTTP request-smuggling (TE.CL / CL.TE desync) saldırılarının temelidir. Katı ayrıştırma ile sunucu ayrıca chunked transfer encoding'in daha sıkı doğrulamasını uygular, hatalı biçimlendirilmiş chunk boyutlarını ve trailer'ları reddeder.
Bu özellik varsayılan olarak etkindir ve güvenilmeyen ağlardan erişilebilen herhangi bir sunucuda, özellikle bir ters proxy veya yük dengeleyicinin arkasında olduğunda etkin kalmalıdır. Yalnızca her iki başlığı da meşru olarak gönderen uyumsuz bir istemciyle birlikte çalışabilmek için devre dışı bırakın.
oServer := TsgcHTTPServer.Create(nil);
oServer.Port := 80;
// belirsiz Content-Length + Transfer-Encoding isteklerini reddet (HTTP 400)
oServer.StrictRequestParsing := true;
oServer.Active := true;