IIS против авторизации ASP.NET - самый простой способ защитить статические файлы? - PullRequest
4 голосов
/ 19 июня 2009

Допустим, у меня есть следующее в 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. Что может быть проще, если попросить посетителя ввести пароль и не предоставлять какие-либо файлы (статические или нет) любому пользователю, у которого его нет? *

Ответы [ 2 ]

2 голосов
/ 19 июня 2009

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

Для IIS 5, гм, обновить до IIS 6.

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

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

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

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

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

2 голосов
/ 19 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...