2013-10-16 26 views
6

個別のデータベースマルチテナントアーキテクチャを使用してMVC4アプリケーションを構築しています。 お客様は、ファイルをアップロードするオプションもあります(主に1〜5MBのサイズ、テキストファイル/ドキュメント)。asp.net MVC 4 webappにユーザーがアップロードしたファイルを保存する場所は?

メタデータをデータベースに保存しながらファイルシステムにファイルを保存する方が良いと結論づけましたが(顧客ごとにフォルダが分かれています)、ファイルの保存先はわかりません。 MVCには特別な場所がありますか?または、私はちょうどどこかのサーバー上にフォルダを作成する必要があります。

デフォルトでこのようなフォルダを安全に作成していますか?

ありがとうございます!

答えて

4

個人的には、申請要件に基づいて決定する必要があります。

アップロードの可能性のある単純なアプリを構築するときは、常にDB =メタデータを使用します。ファイルそのもの=ファイルシステム、これは私がこのようなすべてのアプリケーションに実装するモジュールを持っているので、維持するのが簡単なアプローチです。おそらく、マルチユーザー/アプリケーションアクセスサーバーでセキュリティの問題を引き起こす可能性があります。ここで、 "フォルダアクセス"のセキュリティは、厳密に定義された権限でルートフォルダレベルで管理する必要があります(chmod 777の皆:-))このアプローチには1つの問題がありました。外部アクセスは、特定のファイルの外部GUIDによってリンクされます。

マルチテナント環境の場合、ファイルデータベース(またはメディアデータベースとも呼ばれます)には、CDN URL、つまりファイルを物理的にホストするサーバーへのアドレスも含まれています。ファイルはHttpHandlerによって提供されます。繰り返しますが、私はより安全で柔軟な方法を想像することができますが、これまでのところ私を失敗させることはありませんでした。そして、私はこの解決策に匹敵する問題を認識しています。

しかし、これは興味深い話題なので、誰かが別のソリューションを提案しているのを聞いてみたいと思います。

8

私は、以下のことについて助言したいと思います.Gitzeraiはすでに多くのことを考えました。

あなたのアプリにソリューションを作成するときに、あなたが逃したものがここにあります。

とにかく、

あなたは、ファイルシステム上のファイルをアップロードすることができますが、あなたは注意する必要があるいくつかのものがあります。

  • それはIISのアプリケーションプールを実行するアカウントにのみそのフォルダに読み書き権限を持っており、

  • いかなる状況下でチェックファイルの拡張子を実行し、禁止ではないことを確認し、実行可能ファイル(.exe、.dllファイル作成し、 more)

  • ファイルを拡張子なしで、または.zzz拡張子で保存します。ユーザーがファイルをダウンロードする必要がある場合、元の拡張子に動的に設定することができます。

  • 手動で作成されたすべてのファイルを格納するフォルダは1つだけです。本当に

  • を必要としない場合は、時折、ファイルシステム内のファイル対データベースに

+0

感謝:)良いものをレコードの整合性チェックを行います別のアプリを作成し、動的に複数のフォルダを作成しないようにしてください – user2713516

関連する問題