Se un utente carica un file ma modifica la richiesta impostando il tipo mime su qualcosa di arbitrario, come "superdangerous / blackhatstuff", è sicuro per me inviare lo stesso tipo di mime a un altro utente più tardi su?
vale a dire. un altro utente scarica lo stesso file e ho impostato il mimetype su "superdangerous / blackhatstuff", è possibile impostare il tipo mime su qualcosa di potenzialmente pericoloso? Poiché si tratta di dati forniti dall'utente, ho la sensazione che non sia una buona idea archiviare e riprodurre senza una sorta di sterilizzazione. (Naturalmente sto disinfettando la query prima di memorizzare il tipo mime, quindi non mi occupo di attacchi SQL injection tramite il tipo mime.)
Sto usando clam AV per scansionare i file caricati, che si spera catturino alcuni degli attacchi mime sniffing, ma non è proprio quello che sto chiedendo qui.
Se questo è, in effetti, pericoloso, allora qual è la cosa giusta da fare? Non dovrei specificare un tipo mime e lasciare che sia il destinatario a indovinarlo? Dovrei provare a fare il mio mimo sniffing (sto usando PHP su Linux, che fornisce un'API per i file magic.)
Modifica: Altri dettagli
Lasciatemi spiegare lo scopo di questa funzione. L'applicazione in questione viene utilizzata come parte di un flusso di lavoro che richiede vari tipi di artefatti da sottoporre a revisione e approvazione, inclusi (ma non limitati a) documenti di parole, fogli di lavoro, immagini e archivi. Gli altri utenti dovranno essere in grado di scaricare questi artefatti per visualizzarli e prendere una decisione di approvazione.
Per evitare alcune evidenti violazioni, abbiamo una lista nera (come il caricamento di un file PHP o Javascript) e stiamo impostando Content-Disposition su "attachment; filename = ...". Stiamo eseguendo Clam AV sui file caricati come sanitizzazione di base, dal momento che non possiamo applicare una whitelist ai nostri utenti. L'app viene eseguita su una rete intranet e richiede l'autenticazione prima che sia possibile accedere a qualsiasi elemento e i nostri utenti sono [soprattutto] fidati.
Ad ogni modo, il fatto è che non sto chiedendo informazioni sulla sicurezza della memorizzazione dei file e sul permettere agli utenti di scaricare quei file. (Mi rendo conto che è un grande vettore di minacce, ma non è la domanda che sto chiedendo.) Sono molto più preoccupato di sapere se è possibile riprodurre un mime di tipo utente fornito dall'utente e, in caso negativo, qual è l'alternativa? Per non specificare affatto un tipo mime?