TsgcWebSocketHTTPServerEigenschappen › StrictRequestParsing

StrictRequestParsing Eigenschap

Weigert dubbelzinnige HTTP-verzoeken die worden gebruikt bij request-smuggling-aanvallen en past striktere validatie van chunked-encoding toe.

Syntaxis

property StrictRequestParsing: Boolean read GetStrictRequestParsing write SetStrictRequestParsing;

Standaardwaarde

True

Opmerkingen

Wanneer StrictRequestParsing is ingeschakeld, weigert de server met HTTP-status 400 (Bad Request) elk HTTP-verzoek dat zowel een Content-Length- als een Transfer-Encoding-header bevat. Die combinatie is dubbelzinnig over waar de verzoekbody eindigt, en het is de basis van HTTP-request-smuggling-aanvallen (TE.CL / CL.TE-desync), waarbij een front-endproxy en de back-endserver het oneens zijn over verzoekgrenzen en een aanvaller een tweede verzoek langs de proxy smokkelt. Met strikt parsen past de server ook striktere validatie van chunked transfer-encoding toe, waarbij misvormde chunkgroottes en trailers worden geweigerd.

Deze eigenschap is standaard ingeschakeld en zou ingeschakeld moeten blijven op elke server die bereikbaar is vanaf niet-vertrouwde netwerken, vooral wanneer deze achter een reverse proxy of load balancer staat. Schakel deze alleen uit om te kunnen samenwerken met een niet-conforme client die beide headers legitiem verzendt.

Voorbeeld


oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
// reject ambiguous Content-Length + Transfer-Encoding requests (HTTP 400)
oServer.StrictRequestParsing := true;
oServer.Active := true;

Terug naar Properties