Caricamento file illimitato - firma di file condivisa

1

Un'applicazione java su cui sto lavorando ha un componente di caricamento file e voglio verificare che siano consentiti solo determinati tipi di file. Mi rendo conto che il controllo dell'estensione del file da solo non sia sufficientemente affidabile, quindi ho iniziato a convalidare le firme esadecimali dei file caricati. Ho utilizzato questo per riferimento: link

Quindi, questa applicazione si aspetta file alcuni OOXML, ma sembra che ognuno di questi (docx, pptx, xlsx) abbia la stessa firma esadecimale (50 4B 03 04 14 00 06 00), senza sottotitoli per differenziarli.

C'è un buon modo per differenziarli, o, dovrei implementarlo per cui se l'estensione del file è un file OOXML che accettiamo, e il sig esad condiviso è corretto, permettilo? Ci sono ulteriori problemi di sicurezza dall'implementazione di quest'ultimo?

    
posta Frostbyte 20.10.2017 - 17:56
fonte

1 risposta

1

Tutti i formati di file OOXML sono in realtà archivi zip con contenuti specifici. Ciò rende difficile distinguerli, a meno che tu non sia disposto ad aprirli ed esaminare i contenuti.

Se questo è un problema dipende da cosa stai facendo con i file. Se li stai semplicemente archiviando per il download successivo e hai implementato una buona segregazione tra i caricamenti degli utenti e i file che vengono eseguiti dal server, potrebbe non essere importante. Se stai usando un server che accetta file .jar e la cartella di upload è considerata eseguibile dal software server, potrebbe essere un grosso problema - i file .jar sono anche archivi zip con contenuti specifici, quindi potresti far caricare gli utenti il proprio codice lato server se non stai attento.

Allo stesso modo, aprire gli archivi zip per controllare i contenuti può essere pericoloso - potrebbero espandersi in file di grandi dimensioni che riempiono la memoria di sistema, per esempio. Se stai già estraendo i dati dai file, potresti avere delle protezioni contro questo tipo di file dannoso, quindi non dovrebbe causare problemi.

Personalmente, mi concentrerei sull'assicurare che la funzione di upload non permetta il caricamento di qualsiasi codice eseguibile dal server, sia che questo avvenga caricando i file in una directory che non consente l'esecuzione dei contenuti, facendo rispettare il estensioni di file consentite sia per il caricamento che per l'esecuzione (assicurandoti che siano diverse!) e potenzialmente eseguendo qualche forma di AV sui caricamenti, assicurandoti che non sia vulnerabile agli archivi zip maliziosamente predisposti.

    
risposta data 20.10.2017 - 18:17
fonte

Leggi altre domande sui tag