C# 限制下载.xml文件和.cs文件
在其中一个项目中,我看到了下面的代码C# 限制下载.xml文件和.cs文件,c#,asp.net,C#,Asp.net,在其中一个项目中,我看到了下面的代码 string FileName = Request.QueryString["filename"]; System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; response.ClearContent(); response.Clear(); response.ContentType
string FileName = Request.QueryString["filename"];
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "application/octet-stream";
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");
response.TransmitFile(Server.MapPath("~/" + FileName));
response.Flush();
response.End();
用于从服务器下载文件。现在,若有人手动更改查询字符串中的文件名(比如web.config),那个么它也会下载配置文件
因此,请分享您关于如何根据文件扩展名限制下载的知识。这通常在IIS中完成。但是,如果您想以编程方式执行此操作:
string[] forbiddenExtensions = new string[] {".config", ".abc", ".xml" };
FileInfo fi = new FileInfo(FileName);
if (forbiddenExtensions.Contains(fi.Extension))
{
//throw some error or something...
}
首先,您必须问问自己是否要编写代码让用户下载文件系统上的文件。web服务器本身可以很好地处理文件下载并阻止访问不应共享的文件 如果您确定要这样做,例如,因为您希望在每次下载之前运行一些代码,那么您应该查看。然后web服务器仍将首先确定权限等,以防止恶意用户下载敏感文件,如果允许,您的代码将在下载之前运行
也就是说,您不想提供从web根目录下载的文件。相反,创建一个专用目录,比如“Downloads”,并托管您的文件以便从那里下载。然后使用
filename=Path.GetFileName(filename)
阻止用户在该目录之外导航(使用。
和/或\
)。绝不允许从网站根目录下载。始终使用专用的文件
、内容
、公共
或上传
区域。您完全正确。但在这个阶段,我无法更改它,因为它在整个解决方案中被使用了很多次。是否可以通过配置文件或IIS中的某些配置进行更改?我不想更改代码。我可以帮你。。。但是,您应该明确地将文件移动到特定文件夹和/或重构代码。花点时间修复这些漏洞……MIME类型列表中没有配置扩展名。