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