2016-04-08 108 views
1

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

网址:

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

我已经检查了权限上ParentFolder,子文件夹,只有极少数人有访问这些文件夹,但我有关心,为什么这些文件是其他人访问以及。请指教。

此外,我正在使用ASP.NET(web-forms)应用程序,所以有web.config文件中需要的任何配置,以删除易受攻击的,因为此网址不打我的源代码中的任何页面。谢谢。

+0

ASP.NET实际上并没有什么关系,它只是一个由Web服务器提供的'.doc'文件。如果你担心人们可以访问它,为什么它在Web服务器上开始?为什么不把它从Web服务器的目录中删除,如果你不想访问? – David

回答

1

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

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

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

而且我使用ASP.NET(网页形式)的应用程序,那么有没有在web.config文件中删除脆弱,因为该网址不打任何网页在我的源代码所需的任何配置。

嗯,是的,没有。如果您希望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应用程序成为用户和文件之间的一种屏障。