- 在Windows 2003服務器
- ASP.NET 3.5 SP1 IIS 6 從虛擬目錄中運行
- C#Web應用程序
有幾個我不想提供的文件。例如,根目錄中有一個不可訪問的hibernate.cfg.xml
。日誌目錄中也有日誌文件。在本地開發服務器(Visual Studio 2008中)NHibernate的配置文件可以在幾個方面,通過Web.config進行保護:
<location path="hibernate.cfg.xml">
<system.web>
<authorization>
<deny users="?"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
OR
<httpHandlers>
...
<add path="*.cfg.xml" verb="*" type="System.Web.HttpForbiddenHandler" />
</httpHandlers>
日誌在不同的目錄下即可通過另一個Web.config文件保護:
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
這些工作都沒有,當應用程序使用aspnet_compiler.exe編譯和部署到IIS 6服務器。日誌中沒有錯誤。這些文件對任何人都是可讀的。該應用程序被編譯並安裝使用的MSBuild如下:
<AspNetCompiler Force="true" Debug="true" PhysicalPath="$(DeploymentTempPath)\$(DeploymentAppName)" TargetPath="$(DeploymentPath)\$(DeploymentAppName)" VirtualPath="/$(DeploymentAppName)" />
如何使IIS 6尊重Web.config中的授權規則。
注意:假定我無法將這些文件移動到部署目錄之外。
+1你打我40秒 –
感謝您的快速回答,但不幸的是,這並沒有奏效。 IIUC,'拒絕用戶=「?」'只是確保匿名用戶不被允許訪問資源。但在應用此更改之前,通過身份驗證的用戶可以訪問該文件,即使通過'deny users =「*」'本來應該處理該情況。 – tro