2017-12-01 3 views
0

Gibt es eine Möglichkeit, die genaue Dateiendung zu finden.Falls beispielsweise die Erweiterung .csv ist, hat jemand die Erweiterung manuell in .xlsx geändert (zB Änderung der .csv Erweiterung manuell im Desktop in. pdf) .wo .Now Dateierweiterung wird in .xlsx Format geändert, aber Inhalt gehören zu .csv Format.So gibt es eine Möglichkeit, diese Art von bösartigen Datei in C# zu finden. Im Folgenden Code erhalten die Dateierweiterung, aber es nicht weiß, ob die Dateierweiterung manuell geändert wird oder nichtC# böswillige Änderung des Dateiformats

Path.GetExtension(Be.FileName).ToLower().Contains(".csv") 

Ich möchte beide Inhaltstyp-Erweiterung überprüfen und auch extension.Since einige Eindringling kann die Datei Datei ändern Erweiterung in die Erweiterung, die wir wollen.Aber Dateiinhalt kann zu einer anderen Erweiterung gehören.Nach oben genannten Code finden Sie nur die Dateinamenerweiterung und nicht inhaltlich Extension.

Haben wir eine andere Eigenschaft in CSVhelper, um diese Art von Datei zu finden.

Kann mir jemand helfen?

+6

Was Sie haben, finden Sie "die genaue Erweiterung" - aber das ist sehr verschieden von "das Format des tatsächlichen Inhalts der Datei." Es gibt keine garantierte Beziehung zwischen einem Dateinamen und seinem Inhalt. –

+0

Sie könnten eine Art Heuristik-Dateiprüfer erfinden ... aber die schiere Menge an Fällen würde das unwahrscheinlicher machen. Sie wissen, was Sie als Datei "wollen" - versuchen Sie, es zu parsen, Fehler zu finden und den Benutzer zu schützen. Mist drin - Mist. –

+0

Bedenken Sie auch, dass zwei Dateien * genau den gleichen Inhalt * enthalten können, aber die beabsichtigte * Interpretation * ist anders. Z.B. Das Problem, mit dem Inhaltstypen in HTTP umgehen. –

Antwort

0

CSV ist ein ziemlich einfacher Dateityp, nach dem zu suchen ist. Schreiben Sie einen Dateiparser, bevor Sie die Datei als Eingabe für Ihr Programm verwenden.

Parser tut folgendes: Beweisen Sie die Integrität der Datei als CSV-Datei. Dies geschieht, indem der Separator in der Mitte und der neue Zeilentrenner am Ende geprüft wird.

Wenn die Datei korrekt betitelt und korrekt als CSV formatiert ist, fahren Sie nur fort.

Die zweite Methode könnte ein bisschen komplex sein. Wenn Sie die Kontrolle über das gesamte Dateisystem haben, können Sie Datei-Logger auf Dateien platzieren, über die Sie benachrichtigt werden möchten. Jede Änderung in der Datei wird Ihrem Programm gemeldet. Dies würde letztendlich eine Menge Ressourcen kosten und manchmal sogar scheitern.

Verwandte Themen