Comment faire pour Accepter les Fichiers dont le type de contenu Spécifié à travers le système d'Exploitation
que je suis en train de télécharger un Fichier, et je suis en train de vérifier leur extension, comme je sais que c'est pas une bonne pratique, c'est donc le code que je fais cela. il fonctionne très bien, mais comme je suis confronté à problème à Apple, les Utilisateurs de Mac, ils ne sont pas en mesure de télécharger les fichiers pdf.
if (upload1.HasFile)
{
Finfo = new FileInfo(upload1.PostedFile.FileName);
if (Finfo.Extension.ToLower() == ".docx" || Finfo.Extension.ToLower() == ".doc" || Finfo.Extension.ToLower() == ".xls" ||
Finfo.Extension.ToLower() == ".xlsx" || Finfo.Extension.ToLower() == ".pdf" || Finfo.Extension.ToLower() == ".jpg" ||
Finfo.Extension.ToLower() == ".png" || Finfo.Extension.ToLower() == ".gif" || Finfo.Extension.ToLower() == ".txt" ||
Finfo.Extension.ToLower() == ".mp4" || Finfo.Extension.ToLower() == "ppt" || Finfo.Extension.ToLower() == ".bmp" ||
Finfo.Extension.ToLower() == ".swf" || Finfo.Extension.ToLower() == ".rm" || Finfo.Extension.ToLower() == ".pptx")
{
//Accept File
}
}
maintenant ce que je pensais, je vais utiliser ce code, de sorte qu'il permettra de résoudre le problème
if (
upload1.PostedFile.ContentType == "text/rtf" ||
upload1.PostedFile.ContentType == "application/doc" ||
upload1.PostedFile.ContentType == "appl/text" ||
upload1.PostedFile.ContentType == "application/vnd.msword" ||
upload1.PostedFile.ContentType == "application/vnd.ms-word" ||
upload1.PostedFile.ContentType == "application/winword" ||
upload1.PostedFile.ContentType == "application/word" ||
upload1.PostedFile.ContentType == "application/msword" ||
upload1.PostedFile.ContentType == "application/x-msw6" ||
upload1.PostedFile.ContentType == "application/x-msword" ||
upload1.PostedFile.ContentType == "application/pdf" ||
FileUpload1.PostedFile.ContentType == "application/x-pdf" ||
upload1.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ||
upload1.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.wordprocessingml.template"
)
est-il une bonne façon d'Accepter les Fichiers des utilisateurs. J'ai besoin de permettre à Tous les Fichiers Sauf le fichier EXE,DMG, DLL,CS, SQL, BAT . comment puis-je m'assurer qu'elle fonctionne sur tous les systèmes d'exploitation.
- Utilisateur d'Apple peut utiliser OpenOffice, ou certains autres logiciels à télécharger. nous avons donc besoin d'autoriser ce type de fichier est également
quelqu'un peut-il me dire comment gérer ces situations
OriginalL'auteur Ravi Gadag | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Type de contenu est essentiellement déterminée par le client, mais surtout, le client ne peut pas envoyer de type de contenu, dans ce cas, la vérification de l'extension est la meilleure façon de vérifier le type de fichier. Ou vous devriez vérifier à la fois. Nous avons rencontré des problèmes avec certains clients mac qui n'ont pas envoyé de type de contenu.
En cas d'absence des deux, vous aurez pour vérifier quelques octets du fichier à vérifier son type.
Type de contenu est une mauvaise idée, car si l'utilisateur ne dispose pas de logiciel installé, le système d'exploitation va envoyer le mauvais type de contenu.
OriginalL'auteur Akash Kava
Lorsqu'ils téléchargent le fichier ne doit être immédiatement disponibles?
Ce que j'ai fait dans le passé est de les placer dans un dossier en attente sur le serveur, puis à un intervalle donné (bien qu'il pourrait être une fonction appelée suite à télécharger) je lance un petit processus qui ont lu les premiers octets de données. La plupart de ces types de fichiers ont un enregistrement d'en-tête, souvent en format texte, PDF, par exemple, a "%PDF" que les 4 premiers caractères. Les exécutables commencent souvent avec le charcaters "MZ". Jetez un oeil dans un éditeur hexadécimal (TextPad va travailler par exemple). C'est bien sûr, vous dernier port d'escale, votre filet de sécurité, les premières mesures est de limiter par suffixe comme vous le faites (même si ce n'est pas une garantie réelle du contenu du fichier). Vous pouvez également utiliser les types MIME pour bloquer certains types Liste Des Types Mime qui aidera aussi. voir ici par exemple: http://forums.asp.net/p/1554764/3829242.aspx
Edit: Notez que certains de ces fichiers que vous souhaitez omettre sont juste des fichiers de texte: .chauve-souris et .cs par exemple. Ainsi, les Types MIME ou de la lecture du début des données ne va pas aider - donc, la meilleure façon est de les interdire ces extensions totalement ou renommer les extensions .txt lors de l'enregistrement sur le serveur. Ils peuvent ne pas faire de tort que les fichiers texte .txt extension comme elles le seront; ne pas être exécutable - vous aurez aussi besoin de considérer .reg est de deviner trop.
OriginalL'auteur Wolf5370
La meilleure façon de le faire est d'utiliser le FileOpenDialog composant pour permettre à l'utilisateur de choisir un fichier d'une manière ordonnée, tout en ajoutant des filtres pour le composant (par exemple. "*.swf fichiers swf").
mon mauvais. La seule amélioration que je peux penser à est de: var fileex = Finfo.L'Extension.ToLower(); if (new[]{"docx","swf",...}.Tout(ex => ex == fileex)) {...}
OriginalL'auteur SimpleVar
Vous avez besoin pour maintenir une liste noire de type de contenu que vous savez quels types de besoins d'être bloquée, plutôt que les types qui doit être autorisé même si plus tard est bien pratique sécurisée.
Je vous recommande de courir à travers certains antivirus webservice ou d'analyse avant de acepting les fichiers quelque chose comme http://www.opswat.com/products/metascan
OriginalL'auteur Ramesh
j'ai Utilisé l'Extension de Fichier et Même le type de Contenu de validation. avec nous avons restreint l'utilisateur de ne pas télécharger d'autres que les documents office, nous avons tout de Même essayé de Telerik Télécharger les contrôles à réaliser les functionalty . encore une fois merci pour tous ceux qui ont donné des réponses .
OriginalL'auteur Ravi Gadag
Avez-vous vérifié cette réponse À l'aide de .NET, comment pouvez-vous trouver le type mime d'un fichier basé sur le fichier de signature de ne pas l'extension ?
Obtenir le type mime du fichier est possible par le serveur de côté et noir de la liste de ceux que vous ne voulez pas.
Également à l'aide d'un reg expression de filtrer le type de fichier dans la boîte de dialogue Ouvrir fichier est quelque peu fiables puisque tout utilisateur peut, par exemple de type . dans le champ nom de fichier et télécharger n'importe quel type de fichier.
OriginalL'auteur Carlos Ferreira
" J'ai besoin de permettre à Tous les Fichiers Sauf le fichier EXE,DMG, DLL,CS, SQL, BAT . comment puis-je m'assurer qu'elle fonctionne sur tous les systèmes d'exploitation. "
Je voudrais utiliser l'extension de fichier comme la première ligne de défense,puis le type de contenu, puis de la signature des fichiers. Essayez d'utiliser un if imbriquées énoncé trois niveaux de profondeur pour vous assurer que le fichier passe tout le chemin à travers.
Pour ce code:
Pourquoi ne pas inverser la logique sur les extensions de fichier qui sont interdites?
Cela vous fera économiser de code, surtout si la liste n'est pas finie et ou petits. Pense au mec qui peut avoir à apporter des modifications à votre code plus tard....peut-être que vous :*)
OriginalL'auteur Taruchu
Vous devez absolument ne pas accepter tous les types de fichiers - c'est un trou de sécurité énorme.
Je soupçonne que le problème d'erreur de l'utilisateur. Pouvez-vous vérifier que le " mac " utilisateur n'a pas ouvert le fichier alors qu'il est en train d'essayer de télécharger? Il n'y a aucune raison pour qu'un téléchargement à partir de mac doivent se comporter différemment à partir du pc.
Nous avons une exigence semblable, et utiliser à la fois le type de données et de l'extension de nom de fichier pour déterminer ce qui est téléchargé. Nous n'avons pas de problèmes à partir de mac, pc, linux ou autre.
OriginalL'auteur mson