1

[これは、コンピューター言語学者との以前の議論に関するフォローアップ/クリーンな質問です。これを十分に指定したことを願っています] ImageResizerは、サイトルートの外部のファイルを取得して提供できますか(したがって、変更されていないオリジナルをオンラインで利用できるようにすることは避けます)?または、このシナリオのベストプラクティスは何ですか?

*オリジナルをサイトルートの外部に保存し、ベースサイズ変更された画像をオンラインで保存し(url auth / httpmoduleなどで保護)、その画像に基づいてImageresizerに親指などのサイズ変更をオンザフライで実行させる必要がありますか?私が見た限りでは、imageresizerを介して要求された場合を除いて、フォルダへのアクセスを100%制限する方法を見つけていません。ImageResizerのサイズを変更できる場合、ユーザーはそれにアクセスできます。

*または、元の画像を提供し、ImageResizerによって処理されるコントローラーを使用したソリューションである可能性があります。

主な目的:

  1. 権限ルールを完全にカスタマイズできる

  2. 安全な方法でサービスを提供できる(少なくとも、変更されていないユーザーがアップロードした画像は、siterootの直下からアクセスできないようにする必要があることを学んだ限り)。また、オリジナルを保存することは、将来を見据えた戦略のようです。

  3. ImageResizerの素晴らしさをオンザフライのサイズ変更で利用できます。

他の人がこれをどのように実装したかについての意見もありがたいです。

4

1 に答える 1

1
  1. サイトルートの外部にファイルを配置しても、何も実行されません。それらを仮想フォルダとしてマウントし、再びアクセスできるようにする必要があります。
  2. MVCは、ここではまったく役に立たないように記述されています。つまり、ProcessRequestが何かを実行するまで先延ばしになります。
  3. ImageResizerは、この質問とはまったく関係がありません。目的に応じてStaticFileHandlerのように動作します。一般的な認証システムが必要です。
  4. ASP.NET URL承認は、必要なレベルの複雑さに対して十分に洗練されていない可能性があるようです。

カスタム認証ロジックを実行するには、HTTPパイプラインでAuthorizeRequestイベントを処理し、パス解析ロジックを最初から実装する必要があります。Global.asax.csで、またはIHttpModuleを実装することにより、イベントを処理できます。

AuthorizeRequestでは、ImageResizerまたは他のHttpModuleまたはHttpHandlerがそれを見る前に、着信パスとクエリ文字列データにアクセスし、ユーザーが今日アクセスできるかどうかを判断し、リクエストを続行するか、HTTP401エラーをスローすることができます。 。

ILSpyを使用して、System.Web.SecurityにあるUrlAuthorizationModuleを確認することをお勧めします。ほんの数ページのコードの長さで、非常に簡単です。

于 2012-08-06T02:25:48.357 に答える