C# 如何防止匿名用户使用表单身份验证访问文件?
我们使用表单身份验证来验证用户。在我们的应用程序中,有一个下载exe的页面 当我在VisualStudio中调试代码时,它只允许登录用户下载文件。当其他用户尝试下载文件时,他们会自动重定向到登录页面 但是,当我从虚拟目录运行该文件时,所有用户(无论是否登录)都可以通过访问直接路径下载该文件,如C# 如何防止匿名用户使用表单身份验证访问文件?,c#,asp.net,download,forms-authentication,virtual-directory,C#,Asp.net,Download,Forms Authentication,Virtual Directory,我们使用表单身份验证来验证用户。在我们的应用程序中,有一个下载exe的页面 当我在VisualStudio中调试代码时,它只允许登录用户下载文件。当其他用户尝试下载文件时,他们会自动重定向到登录页面 但是,当我从虚拟目录运行该文件时,所有用户(无论是否登录)都可以通过访问直接路径下载该文件,如http://testappln/foldername/test.exe 在这种情况下如何防止未经授权的用户访问?一种可能是将文件放入禁止直接访问的App\u Data文件夹中,然后使用通用ASHX处理程序
http://testappln/foldername/test.exe
在这种情况下如何防止未经授权的用户访问?一种可能是将文件放入禁止直接访问的
App\u Data
文件夹中,然后使用通用ASHX处理程序读取文件内容并将其返回给客户端。然后,您可以将此通用处理程序的访问权限限制为仅经过身份验证的用户:
<%@ WebHandler Language="C#" Class="Download" %>
using System;
using System.Web;
public class Download : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "application/octet-stream";
context.Response.WriteFile("~/App_Data/test.exe");
}
public bool IsReusable
{
get
{
return false;
}
}
}
一种可能是将文件放入禁止直接访问的
App_Data
文件夹中,然后使用通用ASHX处理程序读取文件内容并将其返回给客户端。然后,您可以将此通用处理程序的访问权限限制为仅经过身份验证的用户:
<%@ WebHandler Language="C#" Class="Download" %>
using System;
using System.Web;
public class Download : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "application/octet-stream";
context.Response.WriteFile("~/App_Data/test.exe");
}
public bool IsReusable
{
get
{
return false;
}
}
}
一种非常简单的方法是使用IIS防止匿名访问文件夹。 只需打开IIS,选择您的站点并选择要保护它的文件夹。 选择文件夹后,双击“身份验证”页面中的“身份验证”(在IIS部分)以禁用匿名身份验证。
到目前为止,只有经过站点身份验证的用户才能访问所选文件夹。一个非常简单的方法是使用IIS来防止匿名访问文件夹。 只需打开IIS,选择您的站点并选择要保护它的文件夹。 选择文件夹后,双击“身份验证”页面中的“身份验证”(在IIS部分)以禁用匿名身份验证。
到目前为止,只有经过站点身份验证的用户才能访问所选文件夹。您使用的是哪个版本的IIS?如果您使用的是IIS 7.0+,您是在经典模式下运行还是在集成模式下运行?用户如何从浏览器访问服务器上的
C:\foldername\test.exe
。。我更改了路径..:)您正在使用哪个版本的IIS?如果您使用的是IIS 7.0+,您是在经典模式下运行还是在集成模式下运行?用户如何从浏览器访问服务器上的C:\foldername\test.exe
。。我更改了路径:)如果我从javascript window.open(')下载这样的文件,那么我如何处理这种情况?@mahesh,比如:window.open('download.ashx','download')
。如果我是从javascript window.open(')下载这样的文件,那么我如何处理这种情况?@mahesh,比如:window.open('download.ashx','download')代码>。