2015-05-07 40 views
0

我有一個c#.net應用程序,允許用戶上傳文檔。然後掃描文檔以查找惡意軟件並保存。這些文檔保存在共享文件和上傳文件夾中。共享文件位於單獨服務器上的Intranet上。 uploads文件夾與應用程序位於同一目錄中,但不是應用程序的一部分。主機服務器正在運行iis 7,目錄列表關閉。如何保護上傳的文檔免於以網絡形式直接訪問

問題是,如果外部用戶能夠猜測命名約定和文件名,他們可以在瀏覽器中輸入並查看文檔。

該應用程序在用戶帳戶下運行。我們已經嘗試在上傳文件夾上設置權限,以僅允許應用程序用戶帳戶訪問權限,該權限不起作用。

我也嘗試添加一個Web配置文件夾:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <authorization> 
     <allow users="application_user_account" /> 
     <deny users="?" /> 
     </authorization> 
    </system.web> 
</configuration> 

放置在上傳文件夾內時,這沒有工作,但是當它被小心將其置於一個文件夾一個上來等級,服務器拒絕所有用戶可以訪問環境中託管的所有應用程序。

有沒有人有解決方案來防止在這種情況下直接訪問上傳文件夾?

回答

1

移動的上傳文件夾到App_Data

例如~/App_Data/Uploads

App_Data是無法從網上讀取的特殊文件夾。

任何導航到example.com/App_Data/Uploads/Foo.docx的嘗試都將導致授權錯誤。例如一個HTTP 403 Forbidden HTTP響應..

+0

我一直在嘗試今天實現此解決方案。我發現這篇關於使用App_Data文件夾的文章:http://www.codeproject.com/Articles/31557/A-Beginner-s-Guide-to-ASP-NET-Application-Folders#h我需要設置一個數據庫文件進入App_Data文件夾,然後我可以將文件插入?最初我遇到拒絕訪問錯誤,但在調整路徑後,我能夠在不丟失錯誤的情況下通過應用程序,但是這些文件未登錄到我的App_Data文件夾中,並且在包含這些文件的服務器上沒有創建App_Data文件夾文件。 – rogerdeuce