IIS ha una funzionalità per obbligare le pagine ad essere viste sotto HTTPS.
Se da un lato questa cosa è positiva per la sicurezza, dall'altro impatta sull'usabilità del sito poichè l'utente deve scrivere l'url completo nel browser.
Per evitare questi problemi, si può evitare di coinvolgere IIS ed inserire un HttpModule. Nell'evento BeginRequest, si recupera l'URL della pagina chiamata e se lo schema è HTTP, viene fatta una ricerca, in una sezione del file di configurazione appositamente creata, per verificare se la pagina deve essere protetta o meno; nel caso la pagina vada protetta, viene fatto un redirect alla stessa convertendo lo schema in HTTPS.
In questo modo le pagine rimangono sicure e non si ottiene nessun errore da IIS.
public class HttpToHttpsModule : IHttpModule { public void Dispose() {} public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); } void context_BeginRequest(object sender, EventArgs e) { if (!HttpContext.Current.Request.IsSecureConnection) { ProtectedPagesSection pages = (ProtectedPagesSection)ConfigurationManager.GetSection("protectedPagesSection"); foreach (NameValueConfigurationElement elem in pages.Pages) { System.Web.UI.WebControls.Literal lt = new Literal(); if (String.Compare(HttpContext.Current.Request.Url.LocalPath, lt.ResolveUrl(elem.Value), StringComparison.OrdinalIgnoreCase) == 0) HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.ToString().Replace("http", "https")); } } } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Short-circuiting della Pipeline in ASP.NET Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Migrare una service connection a workload identity federation in Azure DevOps
Load test di ASP.NET Core con k6
Implementare il throttling in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Evitare (o ridurre) il repo-jacking sulle GitHub Actions