Sono d'accordo che è difficile proteggersi da un attacco quando inviti potenziali aggressori con un modo per caricare file sul tuo server. Il miglior consiglio che posso dare è quello di utilizzare più approcci per proteggere i contenuti caricati.
Assicurati che il nome file che viene inviato sia sterilizzato. Ad esempio, non vuoi che qualcuno invii "/../../index.html" come nome file e sovrascrivi la tua pagina indice.
I nomi dei file dovrebbero anche essere controllati per un tipo mime valido e un'estensione (.jpg, .gif), tuttavia vale anche la pena di indagare se la tua lingua di scelta presenta potenziali vulnerabilità quando si tratta di nomi di file, ad esempio quando si ha a che fare con PHP a volte è possibile passare un byte null che può bypassare le restrizioni di estensione.
Scegliendo un nome file personalizzato per i contenuti caricati, puoi mitigare molto il rischio di nomi di file dannosi. Quindi se accetti un tipo mime di 'image / jpeg', scrivi questo in un file con un nome file di '[RANDOMSTRING] .jpg'.
Come commentato da woliveirajr, il controllo dei byte magici può anche essere una buona idea, tuttavia non ci sarebbe nulla da impedire a qualcuno di caricare uno script di backdoor php contenente pochi byte magici e quindi procedere con <% php code.
Una volta che sei felice di aver protetto lo script di caricamento, controlla se il tuo server web ha un'opzione di configurazione per disabilitare l'esecuzione di script nella tua directory di destinazione (come IIS esegue le autorizzazioni ). Ciò significa che anche se qualcuno è in grado di ignorare la tua whitelist di caricamento, troverà difficile avere uno script da eseguire sul tuo server.
Tieni presente anche gli attacchi non direttamente correlati all'esecuzione del codice sul tuo server. Ho visto innumerevoli volte che i caricamenti di file sono protetti contro l'esecuzione lato server, tuttavia il caricamento di un nome file di "....." provoca un attacco XSS.
Questo non è affatto un elenco esauriente, ma spero che ti fornisca alcune idee sulle diverse aree da proteggere.