「レポート」という共有フォルダがあります。このフォルダにはpdfファイルがあります。
fd6.pdf fd3.pdf
ユーザー「fd3」が認証されると、ユーザーはURLを介してこのフォルダー内の任意のPDFにアクセスできます。これを防ぐ簡単な方法はありますか?
「レポート」という共有フォルダがあります。このフォルダにはpdfファイルがあります。
fd6.pdf fd3.pdf
ユーザー「fd3」が認証されると、ユーザーはURLを介してこのフォルダー内の任意のPDFにアクセスできます。これを防ぐ簡単な方法はありますか?
これを実現する方法はいくつかあります。私はあなたの認証がFormsAuthまたは他のそのようなカスタムアプリケーション認証であり、偽装によって管理されていないことを前提としています(Windows Auth /偽装を使用している場合は、ファイルのACLを直接使用してこれを解決できます)。
IHttpModule
WebアプリケーションのGlobal.asax.csに追加します。あなたがしたいのは、アプリケーションのAuthorizeRequest
イベントに添付することです。Global.asax.csの例:
protected void Application_AuthorizationRequest(object sender, EventArgs e)
{
var application = (HttpApplication)sender;
var context = application.Context;
if (context.User.Identity.IsAuthenticated
&& Path.GetFileName(Path.GetDirectoryName(context.Request.Path)).Equals("reports", StringComparison.OrdinalIgnoreCase)
&& Path.GetExtension(context.Request.Path).EndsWith("pdf", StringComparison.OrdinalIgnoreCase))
{
var fileName = Path.GetFileNameWithoutExtension(context.Request.Path);
if (!context.User.Identity.Name.Equals(fileName, StringComparison.InvariantCultureIgnoreCase))
{
context.Response.StatusCode = 403;
context.Response.StatusDescription = "You are forbidden to view this file.";
}
}
}
web.configのlocal属性でファイルを保護するのが好きです
<location path="pdfs/files">
<system.web>
<authorization>
<allow roles="superuser,admin,VolunteerCoordinator,presenter,ReferralMaker"/>
<deny users="*"/>
</authorization>
</system.web>
次に、保護しているディレクトリへのアクセスを防ぐために役割が定義されていることを確認します