比方說,我有一個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中那樣容易。有什麼最簡單的辦法可以向訪問者要求密碼,並且不向任何沒有它的用戶提供任何文件(靜態或非靜態)?
ISAPI過濾器並沒有太多樂趣,但它並不那麼難,而且一旦你獲得了基本代碼以及其他許多其他真正有用的東西,你就會發現它。如果你不允許部署這種對於許多web開發者來說是這種情況的事情,那麼它就是一個很好的例子。 – AnthonyWJones 2009-06-18 21:33:07