TsgcWebSocketLoadBalancerServer › Propriétés › StrictRequestParsing
Rejette les requêtes HTTP ambiguës utilisées dans les attaques de request-smuggling et applique une validation plus stricte du chunked-encoding.
property StrictRequestParsing: Boolean read GetStrictRequestParsing write SetStrictRequestParsing;
True
Lorsque StrictRequestParsing est activé, le serveur rejette, avec le statut HTTP 400 (Bad Request), toute requête HTTP qui porte À LA FOIS un en-tête Content-Length et un en-tête Transfer-Encoding. Cette combinaison est ambiguë quant à l'endroit où le corps de la requête se termine, et elle est à la base des attaques de request-smuggling HTTP (désynchronisation TE.CL / CL.TE), où un proxy frontal et le serveur dorsal sont en désaccord sur les limites des requêtes et un attaquant fait passer en fraude une seconde requête au-delà du proxy. Avec l'analyse stricte, le serveur applique également une validation plus stricte du chunked transfer encoding, en rejetant les tailles de chunks et les trailers malformés.
Cette propriété est activée par défaut et doit le rester sur tout serveur accessible depuis des réseaux non fiables, en particulier lorsqu'il se trouve derrière un reverse proxy ou un équilibreur de charge. Ne la désactivez que pour interopérer avec un client non conforme qui envoie légitimement les deux en-têtes.
oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.Port := 80;
// reject ambiguous Content-Length + Transfer-Encoding requests (HTTP 400)
oServer.StrictRequestParsing := true;
oServer.Active := true;