2009-02-27 12 views
3

MSDNには、ASP.NET(v.2.0)Fileuploadコントロールまたは基になるHttpPostedFileを使用してファイルをアップロードすると、"ファイルがMIME multipart /デフォルトでは、フォームフィールドやアップロードされたファイルを含むすべての要求は、サーバーメモリに保持されるのではなく、256 KBを超えるディスクにバッファリングされます。リクエストが終了し、どのような要求がないエラーや予期しないシナリオの場合に発生したときMSDN LinkASP.NET FileUploadコントロール - ディスクにバッファリングするときのセキュリティの問題

ディスクにそれがバッファリングし、このバッファがパージされたときに/すなわち除去される、誰もが知っていますが、それであります優雅に終わる?

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

おそらく私は何か誤解しているかもしれませんが、アドバイスや洞察力/助力は大変感謝しています。

答えて

7

OKは、上記の質問に対する回答を見つけることができたので、他の誰かを助ける場合には、ここにそれらを貼りつけるだけです。

デフォルト(のmachine.configで)一般にファイルアップロード/要求の設定は、要求がディスクにバッファリングされる前に、メモリに格納された要求と256バイトの最大サイズとして

4メガバイトです。これらの設定は、httpRuntimeセクションのweb.configで上書きできます。

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

上記の例では、8メガバイトの要求サイズアップを可能にし、512バイトの後に、ディスク上のバッファリングを開始します。 \ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の\ ASP.NETの一時ファイルの\は[APP_NAME] \ [SOME_HEX_NAME_DIR] \ [SOME_HEX_NAME_DIR]

\アップロード\:ファイルが

Cにバッファリングされています

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

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

このように、バッファリングされている機密データは、バッファされたファイルが長時間ハングしないため、問題が多いようです。

0

いくつかの詳細は、それは場合に役立ちます誰:

From MSDN:「RequestLengthDiskThresholdプロパティは、バイト数で入力ストリームバッファリングしきい値の上限を指定するMaxRequestLengthプロパティ値を超えないようにする必要があり、その値要求エンティティを超えた後。このしきい値は、ディスクに透過的にバッファされます。

maxRequestLengthがrequestLengthDiskThresholdと同じレベルに設定されていれば、アップロードされたコンテンツは決してディスクに書き込まれません。

もちろん、ファイルアップロードに対応するためにより多くのメモリを使用するという欠点があります。

例えば、

<httpRuntime maxRequestLength="256" requestLengthDiskThreshold="262144"></httpRuntime> 
関連する問題