9

ユーザーがファイルをアップロードできるポータルを構築しています。これらのファイルにウイルスが含まれていないことを確認する必要があります。私の理想的な解決策は、ホスト OS AV が一時フォルダーを監視し、着信ファイルをスキャンすることです。

ファイルが ASP.Net 2 にアップロードされると、ディスクの一時フォルダーに書き込まれますか? それともメモリに永続化されますか? ディスクに書き込まれた場合、IIS はそれをロックして、AV がそれを削除できないようにしますか? そして、それがディスクに書き込まれる場合、どこに?

4

6 に答える 6

8

理想的な方法は、ASP.NET がファイルを保存するために必要なアクセス許可が付与された "Incoming" フォルダーを持つことだと思います。SaveAsFileUpload コントロールを呼び出した後でも、ファイルがロックされたままになる状況に遭遇したことはありません。

FileUpload コントロールは、呼び出すまでファイルをアップロードしないことに注意してください。SaveAsこれは、ファイルがサーバー上のディスクに永続化されるときです。メソッドが呼び出されHttpInputStreamたときにディスクに書き込まれるすべてのファイルの内容を に保持しているようです。SaveAs

ファイルは、AV アプリケーションでスキャンできるようになります。エラーが発生した場合は、関連するフィードバックをユーザーに提供できます。

于 2009-02-06T10:26:53.883 に答える
3

ASP FileUpload サーバー コントロールを使用していますか?

その場合、何かを行うまでサーバーのメモリにロードされます。

これは MSDN からのものです。

アップロードしたファイルを保存できる場所に固有の制限はありません。ただし、ファイルを保存するには、指定した場所にファイルを作成する権限が ASP.NET プロセスに必要です。さらに、セキュリティ対策として、ファイルの保存に絶対パス (相対パスではない) を要求するようにアプリケーションが構成されている場合があります。

于 2009-02-06T09:14:09.927 に答える
1

あなたのシナリオでは...通常、アップロード/一時的な場所のアプリ設定があり、デフォルトは ~/App_Data/Uploads/ の下にあります。バイトがディスクに永続化されるまで、AV には表示されません。本当にアクティブなスキャンが必要な場合は、スキャンが完了するのを待つ場合に、マルチステージ キューが必要になる場合があります (また、ASP.Net で Async 要求を実行することもできます)。

  • アイテムをキューにプッシュして、たとえば 30 秒でチェックインします (AV スキャナーには十分な時間です)。
  • ファイルをアップロードディレクトリに保存します(チェックされます)
  • キューに対して別のサービス チェックを行い、30 秒以内にまだ存在する場合は完了/処理済みとしてマークします。
  • UI は 10 秒ごとにキューをチェックして完了したかどうかを確認し、それをユーザーに提示します。

ネイティブ スキャナーでアップロード パスをホワイトリストに登録することを検討し、リクエストに応じて手動スキャンを実行する API が公開されているかどうかを確認します。別の方法としては、ClamAV/ClamWin セットアップをサービス スキャナーとして使用する方法があります。1 時間ごとに更新を実行できます (私はこれをメール システム用に実行しました)。また、アーカイブ ファイルであっても、ファイル署名に関してはかなりまともな傾向があります (適切に構成されている場合)。

また、7z.exe (7-zip コマンド ライン) を使用してアーカイブを抽出することもできます。7-zip は、新しいアーカイブの圧縮ターゲットをいくつかしかサポートしていませんが、私が見たほぼすべてのアーカイブ タイプを抽出できます。

これをコメントとして別の投稿に追加するつもりだったので、これが役立つことを願っていますが、長くなってしまいました。

于 2011-09-20T22:43:45.750 に答える
1

セキュリティを真剣に考えている場合は、ファイルを保存するフォルダーが webroot の上にあることを確認して、ユーザーが直接アクセスできないようにすることをお勧めします。アップロードされたファイルを削除する権限をデータベースに与えることもできます。つまり、場所を保存し、各ファイルに一意の名前を付けます (ユーザーが認証している場合は、ファイル名を USERNAME.XYZ として保存します。ここで、XYZ はファイルの拡張子です)。 .

于 2009-02-07T03:32:37.370 に答える
0

Cerebrus と同じように、UploadFile コントロールは、指示しない限り、ディスク ドライブに何も書き込まないことをお伝えします。

于 2009-02-07T01:55:10.733 に答える