TsgcWebSocketHTTPServer › Propriedades › StrictRequestParsing
Rejeita requisições HTTP ambíguas usadas em ataques de request-smuggling e aplica uma validação mais rígida da codificação chunked.
property StrictRequestParsing: Boolean read GetStrictRequestParsing write SetStrictRequestParsing;
True
Quando StrictRequestParsing está habilitado, o servidor rejeita, com o status HTTP 400 (Bad Request), qualquer requisição HTTP que carregue AMBOS os cabeçalhos Content-Length e Transfer-Encoding. Essa combinação é ambígua quanto a onde o corpo da requisição termina e é a base dos ataques de request-smuggling HTTP (dessincronização TE.CL / CL.TE), em que um proxy de front-end e o servidor de back-end discordam sobre os limites das requisições e um atacante contrabandeia uma segunda requisição através do proxy. Com o parsing estrito, o servidor também aplica uma validação mais rígida da codificação de transferência chunked, rejeitando tamanhos de chunk e trailers malformados.
Esta propriedade está habilitada por padrão e deve permanecer habilitada em qualquer servidor acessível a partir de redes não confiáveis, especialmente quando ele estiver atrás de um proxy reverso ou balanceador de carga. Desabilite-a apenas para interoperar com um cliente não conforme que envie legitimamente ambos os cabeçalhos.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
// reject ambiguous Content-Length + Transfer-Encoding requests (HTTP 400)
oServer.StrictRequestParsing := true;
oServer.Active := true;