我有一个名为“reports”的共享文件夹。在这个文件夹中有pdf文件。
fd6.pdf fd3.pdf
用户“fd3”通过身份验证后,用户可以通过url访问此文件夹中的任何pdf。有一种简单的方法可以防止这种情况吗?
答案 0 :(得分:1)
有几种方法可以实现这一目标。我假设您的身份验证是Forms Auth或其他此类自定义应用程序身份验证,而不是通过模拟进行管理(如果您使用的是Windows身份验证/模拟,那么您可以直接使用文件上的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.";
}
}
}
答案 1 :(得分:1)
我喜欢使用web.config中的local属性保护文件
<location path="pdfs/files">
<system.web>
<authorization>
<allow roles="superuser,admin,VolunteerCoordinator,presenter,ReferralMaker"/>
<deny users="*"/>
</authorization>
</system.web>
然后确保定义了您的角色以阻止访问您正在保护的目录