3

MSDN は、ASP.NET ( v.2.0 ) Fileupload コントロールまたは基になる HttpPostedFile を使用してファイルがアップロードされると、「ファイルは MIME multipart/form-data 形式でアップロードされます。デフォルトでは、フォーム フィールドを含むすべてのリクエストとアップロードされた256 KB を超えるファイルは、サーバー メモリに保持されるのではなく、ディスクにバッファリングされます。」 MSDN リンク

ディスク上のどこにバッファリングされているか、このバッファがいつパージ/削除されるか、つまりリクエストが終了したときと、エラーまたはリクエストが正常に終了しない予期しないシナリオの場合に何が起こるかを知っている人はいますか?

私の懸念は、アプリケーションが機密情報 (CC データ、個人データなど) をアップロードできる場合、このファイルがディスクにバッファリングされ、リクエストの最後に削除されない可能性があることです。これは共有ホストで問題になるでしょうか?つまり、このバッファはアプリケーションの外部からアクセスできますか?

たぶん私は何かを誤解しているかもしれませんが、アドバイス/洞察/助けをいただければ幸いです。

4

2 に答える 2

7

OKは、上記の質問に対するいくつかの回答を見つけることができたので、他の人の助けになる場合に備えて、ここに貼り付けます.

デフォルト( machine.config 内)では、ファイルのアップロード/リクエストの設定は一般的に次のとおりです。

リクエストの最大サイズとして 4 MB、リクエストがディスクにバッファリングされる前にメモリに格納される 256 バイト。これらの設定は、httpRuntime セクションの web.config でオーバーライドできます。

<httpRuntime maxRequestLength="8192" requestLengthDiskThreshold="512" />

上記の例では、最大 8 MB の要求サイズが許可され、512 バイト後にディスク上でバッファリングが開始されます。ファイルは次の場所にバッファリングされます

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\ [APP_NAME] \ [SOME_HEX_NAME_DIR] \ [SOME_HEX_NAME_DIR] \uploads\

このパスに [unique_name]_post.tmp でファイルが作成されます。これはリクエストの間存在しますが、リクエストがロックされているためアクセスできません。

いくつかの方法でリクエストを中断しようとしました (IIS を停止する、プロセスを強制終了する、アップロード中にページを閉じる) と、すべてのインスタンスで tmp ファイルが削除されました。

このことから、バッファリングされたファイルが長くぶらぶらしていないため、バッファリングされている機密データはそれほど問題ではないようです。

于 2009-02-27T04:26:10.000 に答える
0

誰かに役立つ場合の詳細情報:

MSDN から:「RequestLengthDiskThreshold プロパティは、入力ストリーム バッファリングのしきい値制限をバイト数で指定します。その値は、MaxRequestLength プロパティ値を超えてはなりません。要求エンティティがこのしきい値を超えると、透過的にディスクにバッファリングされます。」

maxRequestLength が requestLengthDiskThreshold と同じレベルに設定されている場合 (前者は kB 単位、後者はバイト単位であることに注意してください)、アップロードされたコンテンツがディスクに書き込まれることはないと思います。

もちろん、欠点は、ファイルのアップロードを処理するためにより多くのメモリを使用することです。

例えば。

<httpRuntime maxRequestLength="256" requestLengthDiskThreshold="262144"></httpRuntime>
于 2010-09-15T00:52:53.270 に答える