Nel precedente script #1073 abbiamo visto come problemi di URL Canonicalization possano essere risolti in maniera dichiarativa tramite un componente di IIS, denominato URL Rewrite Module, che possiamo configurare specificando delle opportune regole su web.config.
Un'altra esigenza tipica nella gestione di un sito web è quello di fare in modo che le richieste che coinvolgano dati sensibili (come una pagina per un pagamento con carta di credito) siano effettuate sfruttando il protocollo HTTPS. Come possiamo gestire, però, richieste che erroneamente pervengano tramite HTTP?
Una prima soluzione può essere quella di impostare il flag RequireSSL di IIS per il particolare folder che vogliamo proteggere (o magari di tutto il sito), come mostrato in figura.
L'effetto di questo settaggio è che, se un utente visita la pagina tramite HTTP, IIS solleverà uno status code HTTP 403.4 (Forbidden), visualizzando la pagina standard di errore (o una versione custom, se specificata):
Un'alternativa sicuramente più apprezzabile per l'utente è invece quella di effettuare automaticamente il redirect verso l'indirizzo HTTPS e, a questo scopo, possiamo sfruttare ancora una volta l'URL Redirect Module, impostando una regola simile alla seguente:
<rule name="ToHttps" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{URL}" pattern="(secure/.*)" /> <add input="{HTTPS}" pattern="ON" negate="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> </rule>
Essa si applica a tutti gli indirizzi in ingresso che:
- puntano ad una cartella denominata secure;
- non stanno sfruttando il protocollo HTTPS.
Eventualmente possiamo eliminare la prima condizione, nel caso in cui vogliamo che la regola valga per l'intero sito web e non per una particolare cartella. L'effetto finale, specificato nel nodo Action, è quello di effettuare un Redirect verso la stessa pagina, ma con il protocollo corretto.
Alle volte può essere necessario anche l'opposto, ossia rimandare da HTTPS verso HTTP. Un tipico esempio è quando il certificato SSL riguarda solo un sottodominio del nostro sito (ad esempio secure.miosito.com) e quindi vogliamo che tutte le altre pagine vengano aperte in HTTP. In questo caso la regola da creare è molto simile alla precedente:
<rule name="ToHttp" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{URL}" pattern="(secure/.*)" negate="true" /> <add input="{HTTPS}" pattern="ON" /> </conditions> <action type="Redirect" url="http://{HTTP_HOST}/{R:1}" /> </rule>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Creare un'applicazione React e configurare Tailwind CSS
Verificare la provenienza di un commit tramite le GitHub Actions
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Short-circuiting della Pipeline in ASP.NET Core
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Gestire domini wildcard in Azure Container Apps
Potenziare Azure AI Search con la ricerca vettoriale
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Eseguire una GroupBy per entity in Entity Framework
Usare le variabili per personalizzare gli stili CSS
C# 12: Cosa c'è di nuovo e interessante
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Ottimizzazione dei block template in Angular 17
- Paginare i risultati con QuickGrid in Blazor