2009-08-14 12 views
2

サーバーはIIS7です。ASP.NET Web.configの質問

サブフォルダ内のweb.configファイルを無効にする方法はありますか?

アップロード用のウェブサーバー上にフォルダがあるので、私は尋ねています。誰かがファイルをアップロードすると、そのユーザーのセッション用に新しいフォルダが作成され、アップロードされたファイルがそのフォルダに保存されます。

だから、アップロードへのパスは次のようになります:web.configファイルがある〜/アップロード/ディレクトリに 〜/アップロード/ 3F2504E0-4F89-11D3-9A0C-0305E82C3301/somefile.txt

静的ファイルハンドラを除くすべてのhttpハンドラを削除し、ワイルドカードmime型を追加します。したがって、ユーザーがアップロードするすべてのファイルは静的にのみ配信されます。

ユーザーがweb.configファイルをアップロードした場合、そのファイルの設定が適用されないようにしたいとします。

どうすればいいですか?

EDIT

私はちょうどアップロードフォルダクラシックモードの代わりに、統合パイプラインモードで実行するように構成されたアプリケーションプールのメンバーであるアプリケーションを作成できますか?そうすれば、web.configファイルも気にしません。

EDIT 2

は、私は静的にすべてのファイルを提供するためにインストールすることができ、ウェブサーバの別のタイプはありますか?私は別のポートを介してファイルにアクセスすることができます。私はスクリプトを実行しないと確信できるいくつかのソフトウェアがあり、安全です。

答えて

1

[OK]を

どうかのあなたのアップロードフォルダウェブサイトの一部ではなく、代わりにファイルシステムの一部でしたか?この方法では、ASP.NETはフォルダへの要求を処理しないため、ASP.NETランタイムによってweb.configがロードされません。

これらのファイルが保存されているファイルシステムに対して、アプリケーションプールのアカウントに読み取り/書き込みアクセス権を与える必要がありますが、達成しようとしているものに適していると思います。

+0

しかし、私はフォルダ内のファイルを提供する必要があります。私はASP.netがリクエストを処理していないと考えていました。(私の編集を参照してください) –

+0

ファイルシステムからファイルを取得してユーザーにストリームする機能をアプリケーションに追加する必要があります。ファイルシステムからファイルの "ステージング"領域にファイルをコピーすることはできますが、最初に行ったのと同じインジェクションスタイルの攻撃まで自分自身を開きます。 – JMP

+0

私もそれについて考えました。しかし、私はちょうどIISがそれをやりたいと思っています。 –

3

私は、単にその名前のファイルをアップロードすることを許可しませんでした。実際には、私は通常、ユーザーが私に与えたファイル名を信用しないでしょう...注射式の攻撃のための大きな候補者です。

+0

+1ファイルを再命名します。元のファイル名を "記憶"したい場合は、別の場所に保存してください。 –

+0

私はそれを考えました。それは私の質問に答えません。 –

0

明らかに、コードで行うことができます。

フォルダが常に存在する場合は、上書きできないように(重要な)コンテンツとACLがないweb.configをあらかじめ設定しておくことができますが、アップロードフォルダを動的に作成すると思われるパスを見てくださいこれはうまくいかないことを意味します。

0

私はweb.configを使用しないようにIISに指示する方法はないと思いますが(間違っている可能性があります)。個人的には、私は自分のセーブコードにチェックを追加し、ファイルの名前を変更します。

0

最初にファイル名を確認して、web.configという名前のファイルをアップロードしないようにしてみませんか?あなたは、おそらくあまりにもアップロードを許可する前に他のものをチェックしたいとしている - などの大きすぎるファイルを、

...私はこの上の異なる角度を持って
+0

私はそれを考えました。それは私の質問に答えません。 –