TsgcWebSocketHTTPServer › Proprietà › StrictRequestParsing
Rifiuta le richieste HTTP ambigue utilizzate negli attacchi di request smuggling e applica una convalida più rigorosa della codifica chunked.
property StrictRequestParsing: Boolean read GetStrictRequestParsing write SetStrictRequestParsing;
True
Quando StrictRequestParsing è abilitato, il server rifiuta, con lo stato HTTP 400 (Bad Request), qualsiasi richiesta HTTP che porti SIA un'intestazione Content-Length SIA un'intestazione Transfer-Encoding. Tale combinazione è ambigua riguardo a dove termina il corpo della richiesta ed è alla base degli attacchi di HTTP request smuggling (desync TE.CL / CL.TE), in cui un proxy front-end e il server back-end non concordano sui confini delle richieste e un attaccante fa passare di nascosto una seconda richiesta oltre il proxy. Con il parsing rigoroso il server applica anche una convalida più rigorosa della codifica di trasferimento chunked, rifiutando dimensioni di chunk e trailer malformati.
Questa proprietà è abilitata per impostazione predefinita e dovrebbe rimanere abilitata su qualsiasi server raggiungibile da reti non attendibili, specialmente quando si trova dietro un reverse proxy o un load balancer. Disabilitarla solo per interoperare con un client non conforme che invia legittimamente entrambe le intestazioni.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
// reject ambiguous Content-Length + Transfer-Encoding requests (HTTP 400)
oServer.StrictRequestParsing := true;
oServer.Active := true;