mon proble est d'éviter que les utilisateurs téléchargent un fichier malveillant sur mon serveur web. Im travaillant sur l'environnement Linux (Debian).Comment empêcher tout téléchargement de fichier malveillant sur mon serveur? (vérifiez le type de fichier)?
En fait, les téléchargements sont gérés via php par ce code:
function checkFile($nomeFile, $myExt = false){
if($myExt != false){ $goodExt = "_$myExt"."_"; }else{ $goodExt = "_.jpg_.bmp_.zip_.pdf_.gif_.doc_.xls_.csv_.docx_.rar_"; }
$punto = strrpos($nomeFile, '.');
$ext = "_".substr($nomeFile, $punto, 8)."_";
if(stristr($goodExt, $ext)){ return 1; }else{ return 0; }
}
ici i peut spécifier les extensions autorisées à télécharger, et si le fichier DonT les rencontrer i supprimer dès que le téléchargement est terminé. Mais de cette façon laissez l'utilisateur libre de changer l'extension du fichier avec un simple changement de nom ... et c'est mauvais pour moi; même si un fichier.exe (par exemple) ne sera jamais exécuté s'il est renommé en fichier.jpg (ai-je raison?), je ne veux pas avoir de fichiers de danger potentiels sur mon serveur.
Il existe un moyen, en php, python ou whatelse, de faire fonctionner un système unix facilement, pour vérifier le véritable type d'un fichier?
J'ai essayé le python module mimetypes, mais il récupérer le type MIME-ipotetical du fichier .. basé sur l'extension -.-
Oui, le fichier est un bon moyen de le faire. Aussi, il vaut probablement la peine de mentionner que les fichiers .exe ont tendance à être des exécutables Windows, et ne fonctionneront pas sous Linux. –
Alors que .EXE ne nuira pas à un serveur bien configuré, ils peuvent être téléchargés et endommager la machine cliente de quelqu'un. Il est préférable de valider tous les fichiers, même ceux qui ne constituent pas une menace directe. –
Cette réponse est fausse et conduit les gens à penser qu'il s'agit d'un moyen de validation sûr, alors que pour la plupart des cas, c'est tout à fait inutile et facilement contournable. S'il vous plaît voir ma réponse pour une explication complète. – palako