Как заблокировать пути в ASP.NET MVC?

Я впервые просматриваю MVC 4, чтобы проверить, что было изменено / добавлено / etc по сравнению с MVC 3.

Для начала я создал пустое веб-приложение MVC 4 и начал строить с нуля.

Одна из первых вещей, которые я заметил, что в MVC 4 отличается от других, заключается в том, что следующие настройки web.config не влияют на доступность веб-страниц:

        .....  

Вернувшись в MVC 3, приведенные выше настройки авторизации лишат всех анонимных пользователей доступа к любому контенту на сайте. Однако, если я добавлю те же настройки в файл MVC4 Web.config, анонимный имеет свободное владение над URL-адресом, который он / она выбирает.

Что мне нужно сделать в MVC 4 для блокировки всех путей, как это было в MVC 3?

Взгляните на защиту вашего приложения ASP.NET MVC 4 и нового атрибута AllowAnonymous .

Вы не можете использовать файлы маршрутизации или web.config для защиты своего приложения MVC (любая версия). Единственным поддерживаемым способом защиты вашего приложения MVC является применение атрибута Authorize …

котировка

MVC использует маршруты и не перенаправляет URL-адреса в физические расположения файлов, такие как WebForms, PHP и традиционные веб-серверы. Поэтому использование web.config обязательно откроет дыру безопасности на вашем сайте.

У команды продукта будет сообщение, если это изменится в будущем, но на данный момент это правило без правил.

Примеры:

Начните с проекта ASP.Net по умолчанию (интернет / интранет).

Отредактируйте файл web.config, добавив:

        

Запустите проект, по умолчанию вы будете использовать маршрут по умолчанию /Home/Index и вы увидите контент, просто минуя web.config без изменений в шаблоне по умолчанию. Зачем? Поскольку конвейер ASP.Net сравнивает URL-адрес, запрашиваемый в местоположении, указанном в файле web.config. Однако после того, как в момент выполнения события авторизации была выполнена маршрутизация (маршрутизация по умолчанию или настраиваемая маршрутизация) и доступ к предположительно ограниченной зоне.

Кроме того, любой MVC Redirect() также обходит те же меры безопасности, что и снова, когда маршрутизация происходит после события «Авторизация».

Я не думаю, что кто-то должен согласиться на безопасную рабочую безопасность. Сделайте это правильно в первый раз, не ленитесь и используйте то, что не предназначено для использования с определенной технологией.

  • Настройка строки подключения в ASP.NET для SQL SERVER
  • ASP.NET web.config: атрибуты configSource и файлов
  • Хранить массив строк в appSettings?
  • Access-control-allow-origin с несколькими доменами
  • Что получает приоритет, maxRequestLength или maxAllowedContentLength?
  • Цитата Escape в строке подключения web.config
  • Тайм-аут аутентификации форм против тайм-аута sessionState
  • Раздел конфигурации «system.web.extensions» не может быть прочитан, потому что отсутствует объявление раздела
  • Измените web.config программно с помощью C # (.NET)
  • Плюсы и минусы AppSettings vs applicationSettings (.NET app.config / Web.config)
  • Прочтите строку подключения из web.config
  • Давайте будем гением компьютера.