Контекст:IIS 6 игнорирует параметры авторизации Web.config
- IIS 6 на Windows 2003 Server
- ASP.NET 3.5 sp1
- C# веб-приложение работает с виртуального каталога
Есть несколько файлов, которые я бы хотел не обслуживать. Например, в корневом каталоге есть 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>
ИЛИ
<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 ="? "' Просто гарантирует, что анонимным пользователям не разрешен доступ к ресурсу. Но прежде, чем я применил это изменение, аутентифицированные пользователи могли получить доступ к файлу, даже через 'deny users =" * "' должен был позаботиться об этом случае. – tro