2014-11-17 58 views
0

我已經在IIS7上部署了一個Web應用程序,並且該應用程序的郵件附件文件保存在網絡服務器的Attachments文件夾中,並且在從 應用程序下載附件時它工作正常。如何防止直接訪問asp.net中的文件和文件夾?

問題是,從Chrome瀏覽器中查看相同的網址是從另一臺機器上輸入的,同樣可以查看/下載。 Google搜索後,我嘗試了幾個解決方案,但這裏的網絡服務器上的附件文件夾爲網絡服務啓用了安全性。

http://machine-121/AdminManagement/Attachments/58501/17112014131251/FilledForm.pdf(可讀取)

我試圖

<configuration> 
<system.web> 
<authentication mode="Forms"/> 
<authorization> 
<deny users="?"/> <!--This will restrict anonymous user access--> 
</authorization> 
</system.web> 
<location path="login.aspx"> <!-- Path of your Registration.aspx page --> 
<system.web> 
<authorization> 
<allow users="*"/> <!-- This will allow users to access to everyone to Registeration.aspx--> 
</authorization> 
</system.web> 
</location> 
</configuration> 

但未能得逞任何建議/幫助將是很大的幫助。

+1

我不會直接公開這些文件。我希望所有的請求都通過一箇中心函數,它需要用戶名和文件名(ID?)並確定他們是否應該能夠獲取文件。如果是這樣,只需使用Repsonse直接發送文件 - 不直接使用鏈接。 –

+0

嗨瑞安,Appriciate,如果你可以指向一些相同的參考鏈接。 – Harry

+0

你想使用像web.cofig中的「請求過濾」。如果是的話,請在這個問題中檢查user1160006的底部答案:http://stackoverflow.com/questions/6822173/denying-direct-access-to-a-folder-only-allow-through-app-answer-20359486。 –

回答

0

此問題的最佳解決方案是創建一個HTTP處理程序,您可以在其中根據特定條件限制下載文件。檢查這個link瞭解更多信息

+0

感謝Ghyath,您的解決方案似乎是理想的,但只是想確認鏈接http://machine-121/AdminManagement/Attachments/58501/FilledForm.pdf正在被admin和客戶端站點使用,將更新web.config相應的web服務器用於此目的。 – Harry

+0

我很抱歉,我沒有完全明白你的意思。 請更多解釋。 –

+0

我的意思是,http處理程序模塊只能部署在具有文件夾的web服務器上,因爲它也是從客戶端訪問的。 – Harry

1

的問題是,.pdf擴展不是由ASP.NET處理程序捕獲,因爲這並不是一個映射到ASPNET_ISAPI(又名ASP.NET HTTP Runtime)的文件類型。因此,您的web.config文件中的篩選不適用於這些文件。

你有兩個選擇:

  1. 地圖使用IIS配置面板中的所有文件的擴展名(或至少PDF文件在這種情況下),以ASPNET_ISAPI。請注意,這會增加服務器的負載,因爲IIS本身的開銷低於IIS + ASP.NET;
  2. 使用HTTP處理程序爲您獲取文件。這使您可以對文件訪問進行一些細粒度的授權檢查。請參閱Introduction to HTTP Handlers
+0

感謝Patrick給你的建議,並想知道如果我使用Impersonatio ... – Harry

+0

我認爲你的句子的最後一部分缺失。 –

+0

它只是要求使用「模仿」 – Harry

0

我認爲最簡單的辦法就是添加runAllManagedModulesForAllRequests屬性你的模塊節在web.config中,像這樣:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
+0

布蘭登,試過你的建議,但無法解決問題。 – Harry

+0

嗡嗡很奇怪。我經常用這個。它應該根據您的授權設置限制對所有文件(不僅僅是.aspx)的訪問。這是不是這樣做?您可以在不進行身份驗證的情況下訪問pdf文件? –

0

管理,以阻止IIS XML的直接訪問,並仍然允許應用程序查詢的文件與以下規則:

<rule name="Prevent XML direct access" enabled="true" stopProcessing="true"> 
<match url=".*filename\.xml$" /> 
<conditions> 
    <add input="{QUERY_STRING}" pattern="^part_of_query.*$" negate="true" /> 
</conditions> 
<action type="Redirect" url="/error" appendQueryString="false" /> 

相關問題