Wymaganie ASP.NET MVCHttps działa tylko w jedną stronę. W przeszłości właśnie stworzył własną implementację FilterAttribute celu umożliwienia podróży w obie strony:
EnsureHttpsAttribute
public class EnsureHttpsAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
Verify.NotNull(filterContext, "filterContext");
Verify.True(filterContext.HttpContext.Request.HttpMethod.Equals("GET", StringComparison.OrdinalIgnoreCase), "filterContext");
var request = filterContext.HttpContext.Request;
if (request.Url != null && !request.IsSecureConnection && !request.IsLocal)
filterContext.Result = new RedirectResult("https://" + request.Url.Host + request.RawUrl);
}
}
EnsureHttpAttribute
public class EnsureHttpAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
Verify.NotNull(filterContext, "filterContext");
Verify.True(filterContext.HttpContext.Request.HttpMethod.Equals("GET", StringComparison.OrdinalIgnoreCase), "filterContext");
var request = filterContext.HttpContext.Request;
if (request.Url != null && request.IsSecureConnection)
filterContext.Result = new RedirectResult("http://" + request.Url.Host + request.RawUrl);
}
}
Prawie taka sama realizacja jak RequireHttpsAttribute jeśli mnie pamięć nie myli ; chociaż powyższa implementacja sprawdza, czy jest to żądanie Local
i ignoruje przejście na HTTPS.
raz użytkownik żeglował przez requirehttps, jeśli wrócą do kontrolera bez requirehttps nadal będą pod https. –
dlaczego wrócić do zwykłego http? Istnieje tam ogromne ryzyko bezpieczeństwa, po pierwsze żetony uwierzytelniania formularzy są przesyłane w postaci zwykłego tekstu, a identyfikatory sesji mogą być łatwo wciągane. Użyj RequireSsl na formularzu auth (jeśli używasz go), ale z kolei notatka wszędzie, gdzie nie jest ssl, zawiedzie. Uruchom całą witrynę ssl + Dowiedz się, jak łatwo jest ukraść sesję z pojedynczego zalogowanego pakietu http. –
@AdamTuliper Obecnie nie mam/potrzebuję żadnego uwierzytelnienia. Używam tego do wniosku o zatrudnienie. Po jej przesłaniu nie ma sensu dłużej szyfrować przeglądania. Nie przechowuję niczego w sesji. Nasz serwer internetowy wstaje z wiekiem, więc wszystko, co mogę zrobić, aby złagodzić obciążenie, jest potrzebne, więc jeśli już nie potrzebuję ssl, to po co zawracać sobie głowę? Wątpię, aby szyfrowanie powodowało awarie maszyny, ale po prostu nie używam go tam, gdzie nie jest to konieczne, ponieważ szyfrowanie zasobów nie jest bezpłatne. – Jared