【问题标题】:Stop files access through domain name [closed]停止通过域名访问文件[关闭]
【发布时间】:2016-07-29 16:33:27
【问题描述】:

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

网址:

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

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

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

【问题讨论】:

  • ASP.NET 与此没有任何关系,它只是由 Web 服务器提供的 .doc 文件。如果您担心人们可以访问它,为什么一开始就在 Web 服务器上?如果您不想访问它,为什么不直接从 Web 服务器的目录中删除它?

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


【解决方案1】:

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

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

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

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

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

将文件从其公共位置删除,并将其放在网络服务器目录结构之外的位置。只是服务器上的其他位置。然后创建一个 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 应用程序成为用户和文件之间的一种障碍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2016-02-04
    相关资源
    最近更新 更多