Вопрос по asp.net-mvc, requiressl – Как мне сделать OPPOSITE из [RequireHttps (Redirect = true)] в ASP.NET MVC

8

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

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

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

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

обратите внимание, что это было переименовано в RequireHttps в MVC 2 Simon_Weaver

Ваш Ответ

3   ответа
4

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

имеет ли смысл делать это? Я не вижу никакой проблемы с этим сам, но тогда это заставляет меня задуматься, почему это не стандартная функция. собираюсь ли я получить те раздражающие "вы перенаправлены на небезопасную страницу"? ошибки? Simon_Weaver
Это не стандартная функция, потому что нет достаточного стимула для ее включения. Точно так же [RequireSsl] не был перемещен из Futures в основной двоичный файл, потому что, хотя он и был протестирован, он еще не прошел спецификацию, обзор и документацию. Если вы обеспокоены предупреждениями, возможно, лучше всего сначала генерировать ссылки HTTP вместо ссылок HTTPS. Существуют перегрузки Html.ActionLink (), которые принимают протокол в качестве параметра.
1

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

CAUTION: Если вы решите использовать этот подход, ваш cookie-файл аутентификации будет отправлен поверх простого текста после переключения обратно на HTTP, и потенциально может быть украден и использован кем-то другим.Видеть это, Другими словами - если вы используете это для банковского сайта, вам нужно убедиться, что переключение на http будетfirst выйти из системы

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);
        }
    }
0

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

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

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

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

Похожие вопросы