Tipo MIME vs numeri magici

1

Sono interessato a un confronto tra i due riguardo a cosa è più sicuro quando si caricano file su un sito Web (che sono un programmatore per).

La pagina di Mozilla sui tipi MIME afferma che "Sul Web, solo il tipo MIME è rilevante e dovrebbe essere impostato con attenzione. ", sottintendendo che non è possibile utilizzare Magic Numbers o che è più facile falsificarlo.

    
posta nsaigal 23.08.2017 - 00:10
fonte

3 risposte

2

Se stai parlando di upload di file su un server, usa vari metodi per controllare il tipo di file. Il sovraccarico è minuscolo. I numeri magici ti offrono un modo più efficace per verificare il tipo di file, ma possono comunque essere falsificati.

Non fare mai affidamento sull'estensione del file, questa è la parte più banale da falsificare.

Se fossi in me, indipendentemente dal rischio per il sistema, lo farei sempre:

  1. verifica l'estensione del file (l'estensione finale e qualsiasi cosa dopo un.) dopo aver disinfettato l'intero nome
  2. verifica la dimensione del file (entro l'intervallo definito)
  3. verifica il tipo mime
  4. controlla i numeri magici

Tutti i controlli di cui sopra utilizzano una whitelist per la verifica.

Vorrei anche assicurarmi che il file caricato venga spostato in una directory sicura (senza permessi exec) e venga assegnato un nome file casuale.

    
risposta data 22.09.2017 - 16:27
fonte
0

Sì, i tipi Mime sono il metodo consigliato. Poiché questo è ciò che fanno tutti gli User Agent (browser, ecc.), Puoi fare affidamento su di esso per comportamento predefinito.

Per "bit magici" se intendi l'analisi delle strutture di intestazione del file - sì, puoi farlo come un ulteriore passaggio se il tuo rischio è alto, ovvero il tuo modello di minaccia comporta un passaggio in cui gli autori di un attacco caricano un file dannoso e questo porta a qualche debolezza. Comporta chiaramente un ulteriore lavoro da parte tua (che consuma cicli della CPU, aumentando così i costi) che dovresti fare solo quando il vantaggio è "ne vale la pena".

C'è anche la possibilità di usare estensioni del nome del file (ad esempio, .pdf per il formato PDF, .jpg / .jpeg per il formato JPEG, ecc.) per rilevare i tipi di file (usati abbastanza spesso) - ma ancora, questo è leggermente meno affidabile (la mia opinione, non è provato) rispetto all'utilizzo di tipi mime.

    
risposta data 23.08.2017 - 04:31
fonte
0

MIME è rilevante per i programmi utente (browser) quando scaricano i file. I numeri magici sono rilevanti per il server quando un utente carica un file. Non è possibile confrontarli in quanto hanno usi diversi. Puoi usare il numero magico (e le estensioni dei file) per impostare il tipo mime.

La sicurezza non ha nulla a che fare con questo. Inoltre, sia l'estensione del file che il numero magico possono essere falsificati (è più difficile falsificare un numero magico). Per le immagini, è possibile ricodificarle (lato server) per rimuovere qualsiasi potenziale exploit che potrebbe essere incorporato in esse. Per altri file, non ci sono buone soluzioni nella mia conoscenza. Non dovresti fidarti di loro.

    
risposta data 23.08.2017 - 15:57
fonte

Leggi altre domande sui tag