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
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Short-circuiting della Pipeline in ASP.NET Core
Load test di ASP.NET Core con k6
Implementare il throttling in ASP.NET Core
Migrare una service connection a workload identity federation in Azure DevOps
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
I più letti di oggi
- Microsoft annuncia Windows "TrustBridge"
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Estrarre dati randomici da una lista di oggetti in C#
- Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
- Usare il colore CSS per migliorare lo stile della pagina