停止通过域名访问文件

Stop files access through domain name

通过域名可以访问我的文件,我有类似的 URL(如下所示)使我的文件可以访问。

URL:

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

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

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

如果您不希望文件 public 仅可访问,请不要将其放在 public 位置。

only few person have the access to those folders

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

Furthermore i am using ASP.NET (web-forms) application, so is there any configuration required in the web.config file to remove that vulnerable because this url does not hit any page in my source code.

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

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

代码本身可以很简单:

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();

您可以有一个处理程序 return 任何使用查询字符串参数指定的文件。尽管要小心验证文件请求,这样用户不能只从整个文件系统下载任何文件。但是,当然,无论如何,验证请求正是您要问的。

通过这种方式,您可以在 Web 应用程序中使用 authentication/authorization 机制在 return 文件之前验证用户和请求。 ASP.NET 应用程序本质上成为用户和文件之间的一种障碍。