Работает ли авторизация web.config с файлами, отличными от aspx?

#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 вместо этого.