web-dev-qa-db-fra.com

Utilisation de l'extension de fichier et du type MIME (comme sortie par fichier -i -b) combinaison pour déterminer des fichiers dangereux?

Nous permettons aux utilisateurs de télécharger un certain nombre de fichiers, tous renversant à Scribd (Doc, XLS, PPTS, etc.) ou d'afficher une vidéo nous-mêmes (FLV, MOV, MP4, etc. dans FlowPlayer).

Pour éviter les utilisateurs téléchargeant des fichiers dangereux, nous vérifions un ensemble d'extensions de fichier "sûre" connues, puis vérifiez la sortie de la commande Fichier -i -b qui nous donne le type MIME.

Usage: file [OPTION]... [FILE]...
Determine file type of FILEs.
...
-i, --mime                 output mime type strings

Est-ce une protection adéquate pour garder les "scripts dangereux" de notre serveur ou que les gens utilisent quelque chose de différent?

17
siliconpi

Probablement pas sûr. Il existe diverses attaques d'ascendance le type de contenu Sniffer dans la croire qu'un fichier est le type de contenu incorrect. Voici un exemple particulièrement infâme:

http://adblockplus.org/blog/the-hazards-of-mime-sniffing

La suggestion de l'affiche précédente est bonne pour protéger votre serveur de scripts malveillants: déplacez les fichiers téléchargés à l'extérieur de la racine Web et écrivez un script pour les envoyer à l'utilisateur. Vous souhaitez éviter d'avoir votre serveur Web ou votre exécution exécutant des fichiers téléchargés d'un utilisateur. Vous n'avez pas spécifié de langue, mais il y a un fichier PHP "ici:

http://php.net/manual/fr/function.readfile.php

Un autre aspect négligé de la "sécurité des fichiers" consiste à garder des fichiers sans danger pour vos utilisateurs. Si vous laissez les utilisateurs télécharger des fichiers téléchargés par d'autres utilisateurs, les utilisateurs malveillants peuvent utiliser votre site pour diffuser des logiciels malveillants. Dans ce cas, vous voulez probablement mettre en quarantaine des fichiers téléchargés jusqu'à ce que vous puissiez les numériser avec AV.

4
Mark E. Haase