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"));
}
}
}
}Nota: Questo script contiene un allegato.
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
se ci fosse la versione VB sarebbe il massimo.
Per inserire un commento, devi registrarti alla nostra community.







Stampa
Snippet
Download



Trovo molto utile questo script, soprattutto per la mia applicazione web, ma sarebbe possibile avere anche la versione in VB???
Continua »»» | Rispondi »»»