2009-06-18 52 views
4

比方說,我有一個web.config中的以下內容:IIS與ASP.NET授權 - 保護靜態文件的最簡單方法?

<allow roles="Developers" /> 
<deny users="*"/> 

這將鎖定在訪問的.aspx,.asmx和其他.NET類型的文件,但它仍然允許未經授權的用戶打開像靜態文件爲image.jpg。我明白爲什麼當有人要求image.jpg(它不是.NET類型,IIS可以繞過它)時,爲什麼不詢問web.config的授權信息,但是如何鎖定整個應用程序?

建議我在網上找到包括:

  • 創建問題和IIS/.NET將它撿起目錄<location>項。 (它似乎沒有。)
  • 您需要編寫自己的ISAPI篩選器並將所有敏感文件的擴展映射到該映射。
  • 您不需要編寫自己的ISAPI篩選器 - 只需將擴展名映射到aspnet_isapi.dll即可。
  • 您根本不需要編輯IIS,只需在web.config中爲您的擴展創建一個httpHandler條目即可。 (我真的不想爲應用程序中的每個擴展都這樣做)。

這一切都不像我記得它在Apache中那樣容易。有什麼最簡單的辦法可以向訪問者要求密碼,並且不向任何沒有它的用​​戶提供任何文件(靜態或非靜態)?

回答

2

啓用wild card mapping for IIS 6。這將通過ASP.NET管道發送所有文件,保證對所有文件都進行表單驗證。它會降低性能(不知道多少)。

對於IIS 5,嗯,升級到IIS 6

您列出4點的想法:如果你有外卡映射(或特定擴展名映射)

  • 位置纔有效。

  • 誰想寫一個isapi過濾器?除非您有IIS7,否則您無法輕鬆地以管理的語言進行操作。誰想要編寫一個C++ isapi過濾器?

  • 通配符映射就上述警告(性能)工作

  • 同樣,不與IIS註冊那些特定的擴展,並通過ASPNET路由他們最後的選擇不會工作。

+0

ISAPI過濾器並沒有太多樂趣,但它並不那麼難,而且一旦你獲得了基本代碼以及其他許多其他真正有用的東西,你就會發現它。如果你不允許部署這種對於許多web開發者來說是這種情況的事情,那麼它就是一個很好的例子。 – AnthonyWJones 2009-06-18 21:33:07

2

一個很好的簡單方法是升級到IIS 7-它現在有一個集成管道。

+0

+1這將是我的首選選項。 – AnthonyWJones 2009-06-18 21:29:33

相關問題