Information
The client_max_body_size directive defines the maximum permissible size for a client request body, as indicated by the Content-Length header. If a request exceeds this size, NGINX will immediately reject it with a 413 Request Entity Too Large error, preventing the oversized request from being processed further or passed to a backend application.
Limiting the request body size is a crucial defense against resource exhaustion DoS attacks and prevents oversized, potentially malicious payloads from reaching application backends. By setting a logical default limit and only increasing it for specific application endpoints that require it (e.g., file uploads), the principle of least functionality is enforced, significantly reducing the attack surface.
NOTE: Nessus has provided the target output to assist in reviewing the benchmark to ensure target compliance.
Solution
Define a restrictive global limit in the http block. For specific application endpoints that need to accept larger request bodies, override this directive within the corresponding location block.
Example Configuration:
http {
# Set a restrictive global default of 2 Megabytes. This prevents unexpected large requests on most endpoints.
client_max_body_size 2M;
server {
# ...
# This location handles API requests with potentially large JSON payloads.
location /api/v1/data {
client_max_body_size 10M; # Allow up to 10MB
# ...
}
# This location is for large file uploads.
location /uploads {
client_max_body_size 50M; # Allow up to 50MB
# ...
}
}
}
Impact:
Setting this value too low is a common cause of application failure. Legitimate user actions, such as uploading files or submitting large forms, will be blocked with a 413 error if they exceed the configured limit. It is essential that this value is determined based on application requirements and not set to an arbitrary low number.