#asp.net #authentication #iis-7 #iis-7.5
#asp.net #аутентификация #iis-7 #iis-7.5
Вопрос:
У меня есть ASP.NET приложение с аутентификацией в формах. Это работает хорошо, но у меня есть один каталог с файлами olly .txt (без файлов aspx), к которым я хочу, чтобы пользователи не имели доступа (или только зарегистрированные пользователи).
Я добавил web.config в этот каталог:
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
Редактировать:
Это работает только для файлов .aspx. Это не работает для файлов .txt и подобных. Пользователи не могут просматривать этот каталог или подкаталоги, однако, зная имя файла .txt, они могут получить к нему доступ.
Я пробую IIS6 и IIS 7.5. На IIS6 .txt файлы также ограничены, но на IIS 7.5 нет, так что это может быть проблема с конфигурацией IIS.
Комментарии:
1. Какой веб-сервер вы используете? Ваш вопрос заключался в том, как защитить файлы .txt. Ответ Мухаммеда не отвечает на этот вопрос. С вашей конфигурацией у вас будет либо полный доступ (в IIS 5/6), либо нет доступа в IIS 7.x
2. IIS 7.5 — Я обновил свой вопрос. похоже, что все наоборот
3. Да, но ваша конфигурация была неправильной. запретить пользователю =»*» блокирует всех пользователей, а не только неизвестных. Таким образом, IIS6, вероятно, пытался дать вам возможность войти в систему (даже если это бесполезно), но IIS7 этого не сделал. В IIS 6 вы всегда можете получить доступ к своим текстовым файлам. Я обновил свой ответ
4. измените это запретить пользователям =»*» на запретить пользователям =»?»
5. Вы меня не поняли. Я писал, что это работает для файлов aspx. Мой вопрос в том, почему это не работает для файлов .txt и т.д. В IIS 7.5
Ответ №1:
Ваш вопрос зависит от используемого вами веб-сервера. ASP.NET авторизация работает только с типами файлов, которые обрабатываются ASP.NET . Если у вас IIS 5 или 6, это обычно неверно для файлов .txt или даже для файлов .jpg, .gif и pure .html, но только для aspx, asmx и т.д.
Нет проблем, если у вас IIS7 и интегрированный режим, потому что ASP.NET интегрирован и будет вызываться для каждого типа файлов. Итак, если у вас IIS5 или 6, вам нужно зарегистрировать типы mime, такие как aspnet.isapi вызывается и для файлов .txt.
ОБНОВЛЕНИЕ: конфигурация
<deny users="*">
блокирует всех пользователей. Это будет работать только в сочетании с разрешить, например
<allow roles="administrators" />
<deny users="*">
таким образом, все пользователи, кроме администраторов, будут заблокированы. Если пользователь аутентифицирован, но не является администратором, он будет перенаправлен на страницу входа.
Другой вариант — заблокировать только анонимных пользователей:
<deny users="?">
Ответ №2:
Добавьте раздел «местоположение» в web.config с соответствующим элементом «Настройки местоположения» (ASP.NET Схема настроек)
Ответ №3:
Если вы используете IIS 7 , то вы можете использовать system.webServer /security /authorizationhttp://www.iis.net/ConfigReference/system.webServer/security/authorization раздел, и чтобы это автоматически работало для любого вида контента в любом режиме конвейера. ЕСЛИ вы все еще хотите использовать system.веб-раздел, тогда вам нужно будет использовать интегрированный режим и внести изменения, упомянутые в модулях, для запуска всего содержимого, но, безусловно, самым простым является использование system.webServer / security / authorization вместо этого.