Как мне сделать OPPOSITE из [RequireHttps(Redirect=true)] в ASP.NET MVC

Я знаю простой способ получить доступ к странице SSL в ASP.NET MVC - через атрибут [RequireSSL], но я немного запутался в том, как лучше сделать обратное.

У меня есть много ссылок на моем сайте в строке заголовка, и большинство из этих ссылок не требуют SSL, и я не хочу все еще использовать SSL.

Проект Futures позволяет очень легко автоматически перенаправить на страницу SSL с [RequireSSL(Redirect=true)], но это, кажется, не позволяет легко выйти из этого контекста и автоматически перенаправить обратно на http.

Что мне не хватает?

3 ответа

Решение

Вы ничего не пропускаете; для этого нет готовых функциональных возможностей. Вы можете легко создать свой собственный, взяв источник RequireSslAttribute и изменив его.

Ответ на тупой вопрос в другом месте:

Как выйти из режима https в http в asp.net mvc.

ПРЕДУПРЕЖДЕНИЕ. Если вы решите использовать этот подход, ваш файл cookie для проверки подлинности будет отправлен поверх простого текста после переключения обратно на HTTP и потенциально может быть украден и использован кем-то другим. Смотрите это. Другими словами - если бы вы использовали это для банковского сайта, вам нужно было бы убедиться, что переключение на http сначала отключит пользователя.

public class DoesNotRequireSSL: ActionFilterAttribute 
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext) 
        {
                var request = filterContext.HttpContext.Request;
                var response = filterContext.HttpContext.Response;

                if (request.IsSecureConnection && !request.IsLocal) 
                {
                string redirectUrl = request.Url.ToString().Replace("https:", "http:");
                response.Redirect(redirectUrl);
                }
                base.OnActionExecuting(filterContext);
        }
    }

Это стоит прочитать (особенно для того, чтобы осознать последствия для безопасности, связанные с небрежным переключением на http от https:

Частично SSL-защищенные веб-приложения с ASP.NET - не специфичные для MVC, но важные проблемы безопасности

Частичный сайт SSL с ASP.NET MVC - MVC дружественный

Это довольно сложный вопрос в целом. До сих пор не нашел истинного решения всего, что я хочу сделать, но думал, что эти статьи могут помочь другим.

Другие вопросы по тегам