11

ファイルのアップロード機能を備えた、一般に公開されている Web フォームを用意しています。現在、ファイルは Web サーバーに保存されるか、電子メールの添付ファイルとして送信されます。サイズ、つまり 15MB とアップロードされるファイルの拡張子に制限があります。SMTP サーバーは同じ Web サーバー上にあります。誰でも悪意のあるファイルをアップロードでき、本番 Web サーバーに影響を与える可能性があるため、セキュリティに懸念があります。

このようなファイル アップロード コントロールを一般に公開することで、どのようなリスクがありますか? とにかく、悪意のあるファイルをアップロードすることで、誰かが Web サーバーで悪意のあるスクリプトを実行できるのでしょうか。

色々調べた結果、以下の点が分かりました

  1. 電子メールの添付ファイルとしてファイルを送信した場合、このファイルは一時的な ASP .Net フォルダーに一時的に保存され、電子メールが送信されると削除されます。
  2. ファイル システムに保存する前に、ファイルの名前を変更できます。
  3. ウェブサイトとは別の場所にファイルを保存できます
  4. ある種のリアルタイムのウイルスチェックを行うことができます。どうすればそれができるのかわかりません。コマンドラインのウイルススキャンについて読んでいました。しかし、それが本当に必要かどうかはわかりません。

ほんの数点ですが、ファイルアップロードの盲点があれば教えていただきたいです。

4

2 に答える 2

7

考えられるセキュリティの脆弱性に関する質問に答えるために、はい、ファイルをディスクに保存しなくても、アプリケーションとユーザーに対して確実に脆弱性を作成できます。しかし、検証するために取ることができる防御線がいくつかあります。

1つ目は、アップロードできるファイルの種類を明らかに制限することです。これは、ホワイトリストと拡張子のチェックを使用して行うことができますが、それだけではありません。 また、ファイルの内容を調べて、期待される形式に準拠していることを確認する必要があります。悪者はアップロードされたファイルにファイルヘッダーを挿入し、マルウェアを渡すためのゾンビとしてシステムを使用する可能性があるため、これは非常に重要です。

次に、アップロードされたファイルに対してウイルススキャンを実行する必要があります。これは、コマンドラインを使用してローカルのウイルススキャナーを実行することで実行できます。これは、トレンドマイクロを含む多くのウイルススキャンで簡単に実行できます。大量のファイルのアップロードを確認している場合を除いて、サーバーに大きな負担をかけることはありません。

パストラバーサル攻撃にさらされる可能性があるため、ユーザーが送信したデータとしてパスを渡さないようにしてください(ダウンロードするにはGETまたはPOSTを使用)。ユーザーがブラウザーからファイルをダウンロードする必要がある場合は、レコードが保存されている場所のデータベースを作成し、データベースレコードとユーザーがそのレコードにアクセスすることに基づいて、レコードを取得するコントローラーまたはページを作成できます。ユーザーがサーバーからファイルを取得するために制御および使用できるパス。

保存先のディレクトリがWebサーバーで読み取れないことを確認してください。これにより、マルウェアスクリプトをアップロードして、ブラウザからHTTP経由で実行することがなくなります。

すべてのユーザー入力をいくつかのアンチXSSライブラリに対して検証するようにしてください(Microsoftは1つのhttp://www.microsoft.com/en-us/download/details.aspx?id=28589を提供しています)

お役に立てば幸いです。

于 2012-10-13T18:00:33.073 に答える
4

最善の方法は、それらを /App_Data フォルダーにアップロードするか、バイナリ オブジェクトとしてデータベースに保存することです。App_Data は Web サーバーを介して読み取ることができないため、実行およびスクリプト アクセスから保護されます。それらをバイナリで保存する代わりに、Base 64 でエンコードしてテキストで保存することもできます (ファイル システム App_Data またはデータベースのいずれかに)。

プロキシ ページを作成して、ユーザーがファイルを表示/ダウンロードする権限を持っていることを確認し、その場合はファイルのストリームを HTTP 応答に送信します。この方法では、ユーザーは直接アクセスできず、実行してはいけないことを実行できません。ストリーム参照から SMTP クラスを使用してファイルを添付することもできます。

ファイル システムに格納する場合は、独自の命名規則を実装して、実際のファイルの要求が格納されたバージョンにマップされるようにすることができます。

ウイルス スキャンは便利ですが、サーバーを保護するというよりも、ファイルをダウンロードするためにアクセスできる可能性のある他のユーザーを保護するものと考えてください。

于 2012-10-15T14:10:32.813 に答える