So che ci sono molti post su questi argomenti. Ma questi post di solito parlano di limitare i tipi di file e le dimensioni su così via. Quindi non serve ai miei bisogni in quanto il mio sistema non ha vincoli.
Diciamo che abbiamo un'applicazione web, che accetta i caricamenti dagli utenti che hanno effettuato l'accesso. Questi utenti sono autenticati tramite Active Directory. Gli utenti anonimi non sono ammessi.
Gli utenti possono caricare qualsiasi tipo di file nel sistema. Quindi gli utenti possono visualizzare in anteprima i file caricati tramite il nostro visualizzatore multiuso. Al momento supportiamo alcuni tipi di file di base, come immagini, musica, video, file PDF e file di Office. Decido per i tipi visualizzabili controllando un dizionario per i tipi visualizzabili e, se il tipo non esiste, non verrà visualizzato in anteprima ma scaricato direttamente.
Sono curioso dei rischi per la sicurezza che ho, quindi cercherò di elaborare il mio sistema.
Ho due sistemi diversi in termini di procedura di conservazione dei file:
- Un'applicazione Internet in cui lo spazio di archiviazione è un file system strutturato in cui i nomi dei file vengono modificati con i GUID
- Un'applicazione intranet in cui lo spazio di archiviazione è un file system non strutturato in cui i file si trovano direttamente sull'unità di rete mentre l'utente li carica e gli utenti possono accedere ai file anche tramite l'unità di rete
Per entrambe le applicazioni la strategia di anteprima è la stessa.
Tutti i file sono forniti da un metodo di azione a cui è possibile accedere solo se autenticati. E l'attraversamento del percorso logico per i file caricati è consentito .
I file non di ufficio vengono restituiti al client e visualizzati in img
, video
e embed
tag html.
D'altro canto, i file di Office vengono prima eseguiti tramite librerie di interoperabilità di Microsoft Office, convertiti in PDF, quindi restituiti al client e visualizzati di nuovo come un normale pdf.
Mi chiedo, attraverso questi processi sto compromettendo qualsiasi sicurezza qui sul lato server? So che l'utente può caricare file dannosi, ma c'è un modo in cui l'utente può danneggiare il mio sistema durante la scrittura o la lettura dei file?