通过域名我的文件是可访问的,我有类似的URL(下面给出),这使我的文件可以访问。
网址:
https://www.DomainName/ParentFolder/SubFolder/File.doc
我已经检查了 ParentFolder,SubFolders 的权限,只有少数人可以访问这些文件夹,但我担心为什么这些文件也可供其他人访问。请告知。
此外,我正在使用ASP.NET(Web表单)应用程序,因此web.config文件中是否需要任何配置来删除该漏洞,因为此url未访问源代码中的任何页面。感谢。
答案 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应用程序成为用户和文件之间的一种障碍。