2017-12-01 3 views
0

拡張子が.csvの場合、誰かが手動で拡張子を.xlsxに変更しました(たとえば、デスクトップで.csv拡張子を手動で変更するなど)。 pdf).where。ファイル拡張子は.xlsx形式に変更されますが、コンテンツは.csv形式に属します。このような種類の悪質なファイルをC#で見つける方法はあります。コードの下 は、ファイルの拡張子を取得するが、それは、ファイルの拡張子を手動で変更されているかどうかを知っているかいないc#悪意のあるファイル形式の変更

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

を私は両方のコンテンツタイプの拡張子を確認したいともいくつかの侵入者がファイルを変更することがありextension.Sinceを提出しません私たちが望む拡張機能に拡張することができます。しかし、ファイルの内容は別の拡張機能に属している可能性があります。上記のコードはファイル拡張子のみを検索し、正確な拡張子は検索しません。

この種のファイルを見つけるために、CSVhelperには他のプロパティがありますか?

誰でもこれを助けることができますか?

+6

"正確な拡張子"が見つかりましたが、これは "ファイルの実際のコンテンツの形式"とはまったく異なります。ファイル名とその内容との間には保証された関係はありません。 –

+0

ヒューリスティックファイルチェッカーのようなものを作成することもできますが、膨大な量のケースではそれは不可能になります。あなたはあなたがファイルとして "欲しい"ものを知っています - それを解析し、エラーを捕らえて、ユーザーを罵倒しようとします。クラップアウト。 –

+0

また、2つのファイルに*正確に同じ*内容が含まれていても、意図した*解釈*が異なることに注意してください。例えば。 HTTPのコンテンツタイプが対処しようとする問題。 –

答えて

0

CSVは、非常に単純なファイルタイプです。 ファイルをプログラムの入力として使用する前に、ファイルパーサーを作成します。

次のようにします。 ファイルの整合性をCSVファイルとして証明します。 途中のセパレータと最後の改行記号を確認することでそれを行います。

ファイルのタイトルが正しくあり、CSV形式で正しくフォーマットされている場合は、それだけを続行します。

2番目の方法は少し複雑かもしれません。ファイルシステム全体を制御できれば、通知したいファイルにファイルロガーを置くことができます。したがって、ファイルの変更はプログラムに報告されます。これは最終的には多くのリソースを必要とし、時には失敗する可能性があります。

関連する問題