Come web designer (non un esperto di sicurezza) mi chiedo: se permetto agli utenti di caricare contenuti sul mio sito web (video, immagini e file di testo), quali sono i rischi reali coinvolti?
Ci sono un paio di rischi nel permettere il caricamento dei contenuti sul tuo sito, ma quanto sarà importante per te dipenderà probabilmente da come esattamente il sito che stai progettando funzionerà.
Il primo è il caricamento di malware. Se un utente malintenzionato può caricare malware sul tuo sito e il malware viene scaricato ed eseguito dagli utenti, è probabile che si tratti di un problema. Prevenire questo di solito si basa su una combinazione di restrizioni dei tipi di file che possono essere caricati (un punto da notare è che non dovresti semplicemente fare affidamento sull'estensione del file qui) e utilizzare la scansione del malware sui contenuti caricati. Ovviamente il lato di scansione delle cose fermerà solo le firme conosciute e può essere bypassato abbastanza facilmente.
Il secondo potenziale problema è se possono caricare il contenuto attivo e farlo eseguire dall'applicazione. Ad esempio, se il tuo sito utilizza php, se è possibile caricare uno script php e quindi eseguirlo come parte della tua applicazione, è probabile che sia in grado di assumere il controllo del server o almeno accedere ad altre informazioni esistenti nell'app.
Un approccio che ho visto per risolvere questo problema è quello di garantire che i file caricati non siano posizionati nella web root e che il server web non esegua file da quella posizione.
Un terzo rischio, gli utenti caricano materiale "illegale". Questa può essere una domanda legale complicata da ordinare, ma se consenti ai contenuti generati dagli utenti probabilmente dovrai affrontarli prima o poi. La correzione per questo sembra essere principalmente procedurale. Avere un buon rapporto con la tua società di hosting e ISP e assicurarti di poter rispondere alle richieste di rimozione rapida dei contenuti, se stai ospitando in una giurisdizione che richiede che il contenuto venga rimosso in caso di richiesta (ad esempio, una richiesta DMCA ).
Se il tuo server non è ben configurato, potrebbe portare all'esecuzione di codice dannoso nel contesto del tuo server e prendere il controllo dei tuoi file. Un esempio di questo è ben noto PHP backdoor c99shell . Ci sono alcuni consigli per rendere questa funzione più sicura:
FileInclude è uno dei peggiori buchi di sicurezza nei siti Web, basti pensare a cosa succederebbe se una shell C99 uplode (che è uno dei peggiori script php che abbia mai visto) sul tuo sito ed eseguirla.
Un utente malintenzionato può caricare codici maligni che possono interrompere l'autenticazione o caricare un file .exe. Tali file, se aperti dall'altro utente, possono causare gravi problemi di sicurezza e causare prestazioni del sistema.
Dal punto di vista del punto di vista della sicurezza - consentire all'utente di caricare qualsiasi tipo di file eseguibile senza uno screening adeguato è un grosso rischio.Regolo del pollice sarà -
Ho visto alcuni siti che tentavano di impedire il caricamento di script PHP, pur consentendo felicemente il caricamento e l'esecuzione di SSI.
Leggi altre domande sui tag web-application appsec file-upload