IIS противASP.NET авторизация - самый простой способ защитить статические файлы?

StackOverflow https://stackoverflow.com/questions/1015173

  •  06-07-2019
  •  | 
  •  

Вопрос

Допустим, у меня есть следующее в web.config:

<allow roles="Developers" />
<deny users="*"/>

Это блокирует доступ к файлам .aspx, .asmx и другим типам .NET, но по-прежнему позволяет неавторизованным пользователям открывать статические файлы, такие как image.jpg.Я понимаю, почему web.config не запрашивает информацию для авторизации, когда кто-то запрашивает image.jpg (это не тип .NET, и IIS может обойти его), но как я могу заблокировать все приложение?

Совет, который я нашел в Интернете, включает в себя:

  • создать <location> введите для соответствующего каталога, и IIS / .NET подберет его.(Похоже, что нет.)
  • вам нужно написать свой собственный фильтр ISAPI и сопоставить с ним расширения всех конфиденциальных файлов.
  • вам не нужно писать свой собственный фильтр ISAPI - просто сопоставьте расширения с aspnet_isapi.dll это сделает.
  • вам вообще не нужно редактировать IIS, просто создайте запись HttpHandler в web.config для ваших расширений.(Я бы действительно предпочел не пытаться делать это для каждого расширения в приложении.)

Ничто из этого не работает так легко, как я помню, что это было в Apache.Какая самая простая вещь, которая могла бы сработать, чтобы запросить у посетителя пароль и не предоставлять никаких файлов (статических или нет) любому пользователю, у которого его нет?

Это было полезно?

Решение

Включить отображение подстановочных знаков для IIS 6.Это отправит все файлы через конвейер ASP.NET гарантируйте, что аутентификация формы произойдет для всех файлов.Это снизит производительность (не знаю, насколько).

Для IIS 5 единой системы обмена сообщениями обновитесь до IIS 6.

Вы перечисляете 4 идеи:

  • местоположение работает только в том случае, если у вас есть отображение wild card (или сопоставлены определенные расширения).

  • Кто хочет написать фильтр isapi?Вы не сможете легко сделать это на управляемых языках, если у вас нет IIS7.А кто хочет написать фильтр isapi на c ++?

  • отображение подстановочных знаков действительно работает с вышеуказанным предостережением (производительность)

  • Опять же, последний вариант не будет работать без регистрации этих конкретных расширений в IIS и маршрутизации их через aspnet.

Другие советы

Хороший простой способ - это перейти на IIS 7 - теперь в нем есть интегрированный конвейер.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top