Est HttpPostedFile.ContentType un bon moyen de valider un fichier téléchargé?
Je veux valider le type de fichier pour s'assurer que l'utilisateur télécharge une image de type JPEG, GIF ou PNG. Au lieu de vérifier l'extension du fichier, j'ai pensé à l'aide de HttpPostedFile.ContentType serait plus sûr, car il vérifie le type de contenu MIME.
protected void cvValidateImageType_ServerValidate(object source, ServerValidateEventArgs args)
{
if (fupImage.HasFile)
{
args.IsValid = (fupImage.PostedFile.ContentType.ToLower() == "image/jpg" ||
fupImage.PostedFile.ContentType.ToLower() == "image/jpeg" ||
fupImage.PostedFile.ContentType.ToLower() == "image/pjpeg" ||
fupImage.PostedFile.ContentType.ToLower() == "image/gif" ||
fupImage.PostedFile.ContentType.ToLower() == "image/x-png" ||
fupImage.PostedFile.ContentType.ToLower() == "image/png");
}
else
args.IsValid = true;
}
Est-ce un bon moyen de vérifier le type de fichier, ou peut-il être dupe?
OriginalL'auteur Steven | 2010-10-26
Vous devez vous connecter pour publier un commentaire.
L'aide de l'extension est probablement plus sûr. Le ContentType est envoyé dans la requête http du client. Si vous essai pour l'extension, l'utilisateur peut modifier l'extension d'un fichier exe de jpg, mais il ne fonctionne pas comme un fichier exe.
OriginalL'auteur Brian
À la fois à l'aide de l'extension et les en-têtes HTTP sont tout aussi peu fiables, car ils peuvent être truqués avec facilité, soit par un utilisateur malveillant à l'aide de matières requêtes HTTP, ou par un innocent navigateur de l'utilisateur sélectionne une nommée incorrecte de fichier. Si vous voulez être certain, vous devez craquer l'ouverture de fichier et d'en analyser le contenu, il n'y a pas d'autre moyen.
OriginalL'auteur Remus Rusanu
Fiable pour connaître le type de contenu, vous voudrez peut-être regarder dans un Type de Contenu reniflant, par exemple:
http://suika.fam.cx/www/markup/html/whatpm/Whatpm/ContentType.html
Cette tente de déterminer le type de contenu du fichier en examinant les premiers octets.
OriginalL'auteur Mike Chamberlain