RequireHttps di ASP.NET MVC va solo in un modo. In passato ho appena creato il mio propria implementazione FilterAttribute per permettere di viaggio in entrambe le direzioni:
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);
}
}
Quasi la stessa implementazione come RequireHttpsAttribute se la memoria non serve ; sebbene la suddetta implementazione controlli se è una richiesta Local
e ignora il passaggio a HTTPS.
fonte
2012-01-24 19:34:06
una volta che l'utente ha navigato attraverso requirehttps, in caso di ritorno a un controller senza requirehttps saranno ancora sotto l'https. –
perché tornare al semplice http? Esiste un enorme rischio per la sicurezza, in primo luogo i token di autenticazione di form vengono trasmessi in chiaro e gli ID di sessione possono essere facilmente annusati. Usa RequireSsl nell'autentica della tua form (se la stai usando) ma a tua volta nota ovunque che non -ssl fallirà. Esegui tutto il tuo sito ssl + capisci quanto è facile rubare una sessione da un unico pacchetto http registrato. –
@AdamTuliper I attualmente non ha/ha bisogno di alcuna autenticazione. Sto usando questo per un'applicazione di lavoro. Una volta inviato, è inutile crittografare la navigazione più a lungo. Non memorizzo nulla nella sessione. Il nostro server web si sta alzando lì in età quindi tutto ciò che posso fare per facilitare il carico è necessario quindi se non ho più bisogno di ssl allora perché preoccuparsi? Dubito che la crittografia sta andando a impantanare la macchina, ma vorrei solo presumere di non usarlo dove non è necessario poiché la crittografia delle risorse non è gratuita. – Jared