6

ユーザーが IIS サーバー (IIS v7.5 を使用している) にアップロードすることを許可されているファイルタイプのホワイトリストを作成したいと考えています。

私が持っているオプションは何ですか?たとえば、コントローラーの特定のアクションのファイルサイズを 5MB に制限するには、次のセクションを webconfig に追加しました。

<location path="home/fileupload">
  <system.web>
    <!-- maxRequestLength is in kilobytes (KB) -->
    <httpRuntime maxRequestLength="5120" /> <!-- 5MB -->
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- maxAllowedContentLength is in bytes -->
        <requestLimits maxAllowedContentLength="5242880"/> <!-- 5MB -->
      </requestFiltering>
    </security>
  </system.webServer>
</location>

許可されたファイルタイプのホワイトリストを設定するための webconfig のオプションはありますか? または、ファイルが完全にアップロードされたときにコードでファイルタイプを検証することが唯一のオプションですか? おすすめのテクニックは?.docx、.pdf、.jpg などが実際のものであることをどのように確認できますか?

4

3 に答える 3

3

サーバー側が必要なので、ファイルmimeタイプを使用できます。

この投稿は、(拡張子ではなく)ファイルの内容に基づいてMIMEタイプを判別する方法を示しています。

入力を特定のファイル拡張子に制限したい場合は、入力名を受け入れたいものと照合するだけです。これに合格した場合は、リンクした投稿のライブラリに対して外部参照を実行して、ユーザーがファイル拡張子を変更しただけではないことを確認できます。

これを行うと、ファイルが受け入れたいファイルであるというかなりの確実性が得られます。

編集:これまでのコメントに基づいて....あなたが探しているとあなたが言ったことに基づいて、この方法はあなたにとって非常にうまくいくはずです。コメントの1つにリストされているファイルの種類に制限したいだけの場合は、私の提案です...ファイル拡張子を簡単に確認してください。それが有効な場合はurlmon.dll、リンクにリストされているファイルにファイルを渡します。無効なタイプとして戻ってこないことを確認してください....別名Executable/java / zip/etc。無効なタイプでない場合は、安全なファイルであるという非常に高い確実性があります。

urlmon.dll最後に、その投稿のコメントを読むと、暗黙的に必要なすべてのファイルタイプがサポートされているように見えます。これにより、実行可能ファイルまたはその性質のものではないことを確認する必要がなくなりますが、確認する必要があります。 doc / docx / xsl/xslxは有効なmimeタイプを返します。

于 2012-08-18T05:55:50.853 に答える
0

データ注釈はあなたが探しているものです。これはあなたに役立つかもしれない検索です、グーグルデータ注釈

アップデート

ファイル拡張子をオフにして検証すると思います。に依存したくない場合は、 MIME タイプfile extensionsをオフにして検証することをお勧めします。これはより複雑で、ブラウザーごとに異なり、偽造することができます (ただし、これは拡張機能を偽造するよりも複雑です)。

シンプルだが無料ではないオプションは、Telerik RadAsyncUploadを使用することです。

このコードを自分で書くこともできます (ただし、いじったことはありません)。(この投稿では、IIS がないと MIME タイプを確実に検出できないという事実を扱いますが、その方法は理解できるはずです。)

うまくいけば、これでうまくいくでしょう。ご存知のように、ファイルをサイズで制限したり、拡張子で検証したりできます。MIME タイプによる検証を追加すれば、できる限りのことをしたと思います。安全であり、有効なファイルを除外しないためにできることはこれだけだと思います。ファイルのハッシュやその他のオプションについて聞いたことがありますが。しかし、これらは正当なファイルを最も反抗的に除外します。

また、前述したように、MIME タイプは偽物であり、サーバーに送信される可能性があります。安全性を高めるために、クライアント側とサーバー側の両方で検証する必要があります。

于 2012-08-10T18:16:29.410 に答える