2009-04-17 17 views
6

Finora, le mie implementazioni https hanno comunemente coinvolto un ingenuo blocco dell'intero sito con https e fornire un reindirizzamento http-to-https sul server web.Sito http/https misto

Ora ho in programma di avere un singolo sito ASP.NET MVC (sul cloud) che conterrà entrambe le pagine http e https. Quindi, il sito avrà 2 zone concettuali (non fisiche) che prevedono sia richieste sicure che non sicure.

Dal punto di vista della configurazione, ho impostato le porte di ingresso per 80 e 443 e il sito accetta entrambe le richieste.

C'è un modo per passare il protocollo a https per qualsiasi chiamata che va a un'azione che appartiene all'area protetta? Ad esempio, il tipo di cose che i filtri azione possono fare.

Grazie mille.

edit:Si prega di notare che l'idea di questo è di evitare l'uso di URL assoluti sul attributo di azione sotto forma a causa di problemi di portabilità e perché l'utente non vedrà i https: // garanzia indicazioni visive sul browser .

P

risposta

6

Si potrebbe voler dare un'occhiata al futuro assemblaggio MVC da Microsoft available for download here.

Questo ha un FilterAttribute, RequireSslFilterAttribute che permette di codificare facilmente i metodi di azione nel vostro controller che richiedono SSL - per esempio

[RequireSsl(Redirect=true)] 
public ActionResult LogOn() 
{ 
    return View(); 
} 

Il parametro di reindirizzamento opzionale farà sì che la richiesta di essere reindirizzato allo stesso URL ma tramite https invece di http, se necessario.

ATTENZIONE: come fa notare Daniel, nel momento in cui si preme questa azione, potrebbe essere già troppo tardi se i dati sono stati inseriti in una versione non protetta della pagina - è già potenzialmente compromessa, quindi è ancora necessario fare esercizio attenzione quando si utilizza questo e assicurarsi che tutti i dati sensibili vengono inviati tramite https. (Ho appena notato il tuo commento a Daniel, tu ovviamente capisci questo, lascerò l'avviso qui per chiunque altro inciampi su questo però!)

EDIT: Come sottolinea Luca, in MVC2 questo attributo è ora parte di il core framework e viene rinominato in [RequireHttps]

+0

Molte grazie, Steve. Eccezionale. –

+0

Ci scusiamo se questo è sbagliato - apprendimento anche - in MVC 2 sembra che questo attributo sia diventato RequireHttps. Maggiori informazioni qui: http://stackoverflow.com/questions/1639707/asp-net-mvc-requirehttps-in-production-only –

+0

Ben individuato, grazie Luca :) –

0

C'è un modo per capovolgere protocollo HTTPS per ogni chiamata che va a un'azione che appartiene alla zona di sicurezza?

La risposta breve è no, una volta che la richiesta è arrivata tramite http, è già stata potenzialmente compromessa. È possibile richiedere che determinate chiamate arrivino tramite HTTPS (non si sa come farlo poiché non ho fatto ASP.Net per un po ') e inviare un errore se non lo fanno. La chiave è decidere quando vuoi che l'applicazione esegua il salto, cioè durante il login e scegli l'HTTPS come azione per quelle forme. È questo che intendevi per "filtri di azione"?

+0

Ci dispiace Daniel, non se si capovolge la richiesta alla richiesta GET che restituisce il modulo. La richiesta di ottenere non deve essere sicura. È il post che fa. È possibile richiedere che determinate chiamate arrivino tramite HTTPS utilizzando l'URL assoluto che è ciò che intendo evitare. Grazie, però per aver cercato di darmi una mano. –

Problemi correlati