ASP.NET MVC4 を使用してサイトを作成しています。サイトの機能の 1 つは、ユーザーが画像をアップロードすることです。画像は個人的な性質のものである可能性があり、ほぼ間違いなく子供の画像が含まれています.
画像は、メタデータと共に MS Azure SQL データベースに保存されています。Azure で帯域幅の使用を節約するために、イメージがダウンロードされると、ユーザー ディレクトリに保存されます。
~/UserImages/<Username>/<Image>
ギャラリー ページが読み込まれると、コントローラ アクションはユーザー ディレクトリにあるものに対してデータベースをチェックし、まだそこにないものを削除します。
ディレクトリの<Username>
一部は、必要に応じてコントローラによって作成されるため、IIS 権限を設定できません。しかし、たとえ私がそうだったとしても、ユーザーが事前に知られていないため (新規登録など)、IIS で何ができるかわかりません。
MVC ルーティングにより、ユーザーがユーザー名を推測して他のユーザーのディレクトリにアクセスすることはできませんが、ユーザー名とイメージ名を推測できる場合は表示されます。他人の画像が他人に公開される可能性を最小限に抑えるために、それを防ぐためのアイデアを探しています.
を試しましたIgnoreRoute
が、これはうまくいきませんでした。
routes.IgnoreRoute("UserImages/{*pathInfo}");
理想的には、ログアウト時に UserImages ディレクトリをクリアする必要がありますが、誰もがログアウト コマンドを使用するわけではありません。それらがクリアされた場合、ファイルが削除される前にユーザー名とイメージ名の組み合わせが見つかる可能性ははるかに低くなります。