2016-04-08 153 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應用程序成爲用戶和文件之間的一種屏障。