Запретить доступ к публичному действию в ASP.NET MVC 5

Я создал приложение MVC 5. Пришло время опубликовать его в производстве. Инфраструктура состоит из двух серверов: к одному можно получить доступ в Интернете, а к другому - только в интрасети. Сервер - это Windows Server 2012 R2 и использует IIS 8.5 для размещения приложения.

Приложение состоит из серверной части и внешнего интерфейса. Функционал Backend доступен только при входе в систему.

Проблема, которую я хочу решить: как предотвратить вход в приложение из Интернета и разрешить его только в интрасети?

Я думаю, что это может быть некоторая конфигурация в web.config, чтобы предотвратить открытие страницы входа.

Я прочитал много статей, но все результаты направлены на защиту страниц неавторизованных пользователей. В моем случае контроллер входа в систему имеет атрибут [AllowAnonymous], и к нему можно получить доступ без авторизации.

Если это можно сделать с помощью простой конфигурации в web.config, я собираюсь добавить ключ в web.config, чтобы отслеживать, где это сервер в Интернете или сервер в интрасети, например:

//for server accessible on intranet
<add key="serverType" value="PUBLIC"/>

// or

//for server accessible on intranet
<add key="serverType" value="Private"/>

И в соответствующем контроллере для входа в систему я проверю значение, и если оно ConfigurationManager.AppSettings["serverType"] == "PUBLIC", я перенаправлю его на общедоступную домашнюю страницу сайта.

Есть ли у этого решения проблемы с безопасностью?


person Endri    schedule 14.05.2016    source источник


Ответы (1)


В этом случае я бы изменил конфигурацию с помощью преобразований или параметризации (я предпочитаю этот), чтобы использовать соответствующий тип аутентификации. Например, Anonymous для общедоступных и Windows / Forms Auth для частных. У вас будет преобразование / параметризация для каждого типа сервера.

Следующие сообщения предоставляют более подробную информацию о безопасности ASP.NET.

https://msdn.microsoft.com/en-us/library/3yfs7yc7.aspx

https://msdn.microsoft.com/en-us/library/7t6b43z4.aspx

http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx

person chief7    schedule 14.05.2016