ASP.Netを使用してファイル拡張子またはMIMEタイプを使用せずにファイルコンテンツタイプを確認する方法を教えてください。ASP.Netを使用してアップロードされたファイルのコンテンツタイプを確認する
ファイル拡張子によって決定されるように見えるので、私はMIMEタイプを使いたくありません。
ASP.Netを使用してファイル拡張子またはMIMEタイプを使用せずにファイルコンテンツタイプを確認する方法を教えてください。ASP.Netを使用してアップロードされたファイルのコンテンツタイプを確認する
ファイル拡張子によって決定されるように見えるので、私はMIMEタイプを使いたくありません。
UrlMon.dllでFindMimeFromData()関数を使用できます(pinvokeを使用)。
this page for an exampleとこのMSDN page for the documentationの機能を参照してください。
ファイルが特定の拡張タイプであることを確認する一般的な方法はありません。
フォーマットのホワイトリスト(png、jpg、zipなど)を作成し、ファイルヘッダーを調べて、期待されるフォーマットに準拠しているかどうかを判断できます。
ファイルの内容そのものが読み込まれたときにのみ明らかになるように形式が誤っている可能性があるにもかかわらず、だまされません。
本当にファイルの種類によって異なります。多くのファイルタイプでは、ファイルのヘッダーを調べることができます。ファイルのヘッダーは、通常、ファイル内の最初の0文字より前です。以前は画像の種類を調べるコードを使用していましたので、どこかで見つけることができるかもしれません。
しかし、XMLのようなこの形式のヘッダーを持たないファイルタイプがあります(これは安い例ですが、私は考えるのが簡単でした - >)。私は、他のバイナリファイルタイプと同様に、すべてのグラフィックスタイプにヘッダーがあると信じています。
Andrewが述べたように、ヘッダーは100%ではありません。しかし、ファイルが "不正な形式"であれば、ハッキング攻撃になることはまずありません。破損したファイルのアップロードまたはアップロードが破損している可能性が高くなります。