Mi chiedevo se c'è qualche rischio di sicurezza coinvolto nell'innalzare il client_max_body_size in nginx da 1 MB a 20 GB?
Mi chiedevo se c'è qualche rischio di sicurezza coinvolto nell'innalzare il client_max_body_size in nginx da 1 MB a 20 GB?
L'impostazione di client_max_body_size
a 20 GB è, ovviamente, non ragionevole e mi chiedo perché permetteresti (agli utenti? tu stesso?) di caricare file così enormi.
client_max_body_size
governa il corrispondente parametro HTTP Header. Come buona pratica di sicurezza, dobbiamo sempre limitare l'intestazione e il corpo del messaggio ad una lunghezza minima ragionevole. Perché ? 20 GB sono così grandi che hai messo il tuo server nello stesso scenario di 2013 quando Django consentito agli utenti di utilizzare una password molto lunga forzando Django (piuttosto il server in cui è ospitato) a eseguire calcoli hash molto costosi che portano, come si può intuire, a un denial-of-service attacco contro l'intero framework di autenticazione di Django.
Si dice, ci sono altre cose a cui devi pensare se aumenti troppo le dimensioni di client_max_body_size
. Ad esempio, come imposterai il parametro keepalive_timeout
? Come si può calcolare in base al fatto che client_max_body_size
è impostato su 20 GB? Possono essere 20 secondi? 20 minuti ? Due ore ? La stessa domanda riguarda client_header_timeout
e client_body_timeout
che impostano, rispettabilmente, il tempo massimo che Nginx attenderà sul client per specificare un'intestazione di richiesta o chiedere che un oggetto sia servito.