Недавно мне было поручено починить сервер Windows Server 2003 с IIS 6.0, который давал:
HTTP Error 401.3 - Unauthorized: Access is denied due to an ACL set on the requested resource.
Он начал давать эти ответы после патча обновления Windows kb2633880 был применен, который, похоже, изменил некоторые разрешения по умолчанию для учетной записи IUSR_Machine и каталога .Net framework.
Проблема в том, что все запросы ресурсов asp.net (например, .aspx) не работали, в то время как все остальное (например, текст, html). Приложение настроено на обслуживание анонимных запросов с использованием учетной записи IUSR_machine и сетевой службы для учетной записи пула приложений.
Я подтвердил, что учетная запись сетевой службы может получить доступ к C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
каталог в порядке, но учетная запись IUSR_machine не может. После предоставления учетной записи IUSR_machine доступа к C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
каталог проблема решена. Мне это кажется очень странным.
У меня вопрос: почему IIS не использует учетную запись моего пула приложений (сетевая служба) для загрузки aspnet_isapi.dll? Из приведенного выше устранения неполадок кажется совершенно очевидным, что на самом деле для этого используется IUSR_machine, что похоже на дыру в безопасности. Тег идентификации в web.config также не установлен, поэтому он установлен по умолчанию.
Буду признателен за любой совет по этому поводу, спасибо.
Я не могу оправдать ваши ожидания, но значения по умолчанию для почти каждой системы или .Net DLL предназначены для пользователей, имеющих доступ для чтения.
Aspnet_ISAPI является одновременно фильтром и расширением, поэтому может быть загружен при загрузке W3WP (как учетная запись пула приложений) или путем доступа к файлу с отображением сценария (сопоставление сценария фактически запускает DLL в контексте пользователя, выполняющего работу, как и следовало ожидать).