1

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

网址:

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

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

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

4

1 回答 1

1

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

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

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

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

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

将文件从其公共位置删除,并将其放在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 应用程序成为用户和文件之间的一种障碍。

于 2016-04-08T12:25:23.833 回答