Comment sécuriser un dossier utilisé pour permettre aux utilisateurs de télécharger des fichiers ?

StackOverflow https://stackoverflow.com/questions/22519

Question

J'ai un dossier sur mon serveur Web utilisé par les utilisateurs pour télécharger des photos à l'aide d'une page ASP.

Est-il suffisamment sûr pour accorder à l'IUSR des autorisations d'écriture sur le dossier ?Dois-je sécuriser autre chose ?J'ai peur que des pirates contournent la page ASP et téléchargent du contenu directement dans le dossier.

J'utilise ASP classic et IIS6 sur Windows 2003 Server.Le téléchargement se fait via HTTP et non FTP.

Modifier:Changer la question pour plus de clarté et changer mes réponses sous forme de commentaires.

Était-ce utile?

La solution

également, je recommanderais de ne pas laisser les utilisateurs télécharger dans un dossier accessible depuis le Web.Même la meilleure détection de type MIME peut échouer et vous ne voulez absolument pas que les utilisateurs téléchargent, par exemple, un exécutable déguisé en jpeg dans le cas où votre détection MIME échoue, mais celle d'IIS fonctionne correctement.

Dans le monde PHP, c'est encore pire, car un attaquant pourrait télécharger un script PHP malveillant et y accéder ultérieurement via le serveur Web.

Toujours, stockez toujours les fichiers téléchargés dans un répertoire quelque part en dehors de la racine du document et accédez-y via un script d'accès qui effectue une désinfection supplémentaire (et définit au moins explicitement une image/quel que soit le type MIME.

Autres conseils

Comment l’utilisateur va-t-il télécharger les photos ?Si vous écrivez une page ASP pour accepter les fichiers téléchargés, seul l'utilisateur sous lequel IIS s'exécute aura besoin d'une autorisation en écriture sur le dossier, car IIS effectuera les E/S du fichier.Votre page ASP doit vérifier la taille du fichier et disposer d'une certaine forme d'authentification pour empêcher les pirates de remplir votre disque dur.

Si vous configurez un serveur FTP ou une autre méthode de transfert de fichiers, la réponse sera spécifique à la méthode que vous choisissez.

Vous devrez accorder des autorisations d'écriture, mais vous pouvez vérifier le type MIME du fichier pour garantir une image.Vous pouvez utiliser FSO comme suit :

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

En outre, la plupart des objets COM de téléchargement ont une propriété de type que vous pouvez vérifier avant d'écrire le fichier.

Votre meilleur rapport qualité-prix serait probablement d'utiliser un composant de téléchargement (j'ai utilisé ASPUpload) qui vous permet de télécharger/télécharger des fichiers à partir d'un dossier qui n'est pas accessible depuis le site Web.

Vous obtiendrez des crochets d'authentification et n'aurez pas à vous soucier que quelqu'un parcoure le dossier et télécharge les fichiers (ou les télécharge dans votre cas), car les fichiers ne sont disponibles que via le composant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top