Domanda

Ho una cartella nel mio server web utilizzata dagli utenti per caricare foto utilizzando una pagina ASP.

È sufficientemente sicuro concedere a IUSR le autorizzazioni di scrittura sulla cartella?Devo assicurarmi qualcos'altro?Temo che gli hacker evitino la pagina ASP e carichino il contenuto direttamente nella cartella.

Utilizzo ASP classico e IIS6 su Windows 2003 Server.Il caricamento avviene tramite HTTP, non FTP.

Modificare:Modificando la domanda per chiarezza e modificando le mie risposte come commenti.

È stato utile?

Soluzione

inoltre, consiglierei di non consentire agli utenti di caricare in una cartella accessibile dal Web.Anche il miglior rilevamento del tipo MIME potrebbe fallire e non vuoi assolutamente che gli utenti carichino, ad esempio, un eseguibile mascherato da jpeg nel caso in cui lo sniffing MIME fallisca, ma quello in IIS funziona correttamente.

Nel mondo PHP è ancora peggio, perché un utente malintenzionato potrebbe caricare uno script PHP dannoso e successivamente accedervi tramite il server web.

Sempre, archivia sempre i file caricati in una directory da qualche parte al di fuori della root del documento e accedi ad essi tramite uno script di accesso che esegua un'ulteriore sanificazione (e almeno imposta esplicitamente un'immagine/qualunque tipo MIME.

Altri suggerimenti

Come farà l'utente a caricare le foto?Se stai scrivendo una pagina ASP per accettare i file caricati, solo l'utente eseguito da IIS avrà bisogno dell'autorizzazione di scrittura sulla cartella, poiché IIS eseguirà l'I/O del file.La tua pagina ASP dovrebbe controllare la dimensione del file e avere una qualche forma di autenticazione per impedire agli hacker di riempire il tuo disco rigido.

Se stai configurando un server FTP o qualche altro metodo di trasferimento file, la risposta sarà specifica per il metodo scelto.

Dovrai concedere i permessi di scrittura, ma puoi controllare il tipo MIME del file per assicurarti un'immagine.Puoi utilizzare FSO in questo modo:

set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.GetFile("upload.jpg")
'image mime types or image/jpeg or image/gif, so just check to see if "image" is instr
if instr(f.type, "image") = 0 then
   f.delete
end if
set f=nothing
set fs=nothing

Inoltre, la maggior parte degli oggetti COM caricati dispone di una proprietà type che è possibile verificare prima di scrivere il file.

Il miglior rapporto qualità-prezzo sarebbe probabilmente quello di utilizzare un componente di caricamento (io ho utilizzato ASPUpload) che ti consenta di caricare/scaricare file da una cartella non accessibile dal sito web.

Otterrai alcuni hook di autenticazione e non dovrai preoccuparti che qualcuno esplori casualmente la cartella e scarichi i file (o li carichi nel tuo caso), poiché i file sono disponibili solo tramite il componente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top