通过域名停止文件访问

时间:2016-04-08 12:06:56

标签: asp.net .net security server file-security

通过域名我的文件是可访问的,我有类似的URL(下面给出),这使我的文件可以访问。

网址:

https://www.DomainName/ParentFolder/SubFolder/File.doc

我已经检查了 ParentFolder,SubFolders 的权限,只有少数人可以访问这些文件夹,但我担心为什么这些文件也可供其他人访问。请告知。

此外,我正在使用ASP.NET(Web表单)应用程序,因此web.config文件中是否需要任何配置来删除该漏洞,因为此url未访问源代码中的任何页面。感谢。

1 个答案:

答案 0 :(得分:1)

如果您不希望该文件可公开访问,请不要将其放在公共场所。

  

只有少数人可以访问这些文件夹

Web服务器是否可以访问它?如果是这样,那么互联网上的任何人都可以访问它。因为他们都通过Web服务器访问它。

  

此外,我正在使用ASP.NET(网络表单)应用程序,因此web.config文件中是否需要任何配置来删除易受攻击的因为此URL未访问源代码中的任何页面。

嗯,是的,不是。如果您希望ASP.NET应用程序控制对该文件的访问,那么您希望从其 public 位置删除该文件,并将其放在应用程序可以访问它的位置,但公众不能。然后,您可以使用该应用程序来控制对它的访问。

从公共位置删除文件,并将其放在Web服务器目录结构的外部的某个位置。只是服务器上的其他位置。然后创建一个HTTP处理程序(.ashx)甚至是一个页面(如果需要)(.aspx),尽管处理程序通常是首选,因为页面会涉及不必要的开销,并使用该处理程序/页面来通过代码提供文件。

代码本身可以简单:

context.Response.Clear();
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("Content-Disposition", "attachment; filename=File.doc");
context.Response.TransmitFile("C:\Some\Path\To\File.doc");
context.Response.End();

您可以让一个处理程序返回任何使用查询字符串参数指定的文件。虽然小心来验证文件请求,但用户无法从整个文件系统中下载任何文件。但是,当然,验证请求正是您提出的问题。

通过这种方式,您可以在返回文件之前使用Web应用程序中的身份验证/授权机制来验证用户和请求。实质上,ASP.NET应用程序成为用户和文件之间的一种障碍。