TsgcWebSocketHTTPServer › Proprietà › MaxRequestBodySize
Dimensione massima in byte di un corpo di richiesta HTTP in ingresso; protegge il server dagli attacchi di esaurimento della memoria.
property MaxRequestBodySize: Int64 read GetMaxRequestBodySize write SetMaxRequestBodySize;
67108864 (64 MB). Utilizzare 0 per illimitato.
MaxRequestBodySize limita la dimensione di un corpo di richiesta HTTP in ingresso. Senza un tale limite un client può dichiarare un Content-Length enorme e inviare in streaming un corpo illimitato al server per esaurirne la memoria. Quando la dimensione del corpo dichiarata di una richiesta supera questo limite, il server rifiuta la richiesta con lo stato HTTP 413 (Payload Too Large) invece di bufferizzarla, quindi il tentativo viene fermato prima che avvenga qualsiasi allocazione di grandi dimensioni.
Il valore predefinito di 64 MB è sicuro per la stragrande maggioranza delle applicazioni. Aumentarlo se l'applicazione accetta legittimamente caricamenti di grandi dimensioni tramite HTTP POST, oppure ridurlo per restringere il limite di memoria su un server esposto pubblicamente. Un valore di 0 disabilita completamente il limite (non consigliato su un server raggiungibile da reti non attendibili). Questo limite è indipendente da MaxMessageSize, che limita i messaggi WebSocket in ingresso anziché i corpi delle richieste HTTP.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
// reject any HTTP request whose body is larger than 16 MB (HTTP 413)
oServer.MaxRequestBodySize := 16 * 1024 * 1024;
oServer.Active := true;