2009-04-17 5 views
6

Bisher haben meine https-Bereitstellungen häufig eine naive Sperrung der gesamten Website mit https und eine http-to-https-Umleitung auf dem Webserver enthalten.Gemischte http/https-Site

Ich plane jetzt eine einzige ASP.NET MVC-Site (in der Cloud), die sowohl HTTP- als auch HTTPS-Seiten enthalten wird. Daher wird die Site über zwei konzeptionelle (nicht physische) Zonen verfügen, die sowohl sichere als auch nicht sichere Anfragen enthalten.

Konfiguration-weise habe ich Eingabeports für beide 80 und 443 eingerichtet und die Site akzeptiert beide Anfragen.

Gibt es eine Möglichkeit, Protokoll für jeden Anruf, der zu einer Aktion in der sicheren Zone gehört, auf HTTPS umzustellen? Zum Beispiel die Art von Dingen, die Aktionsfilter tun können.

Vielen Dank.

edit:Bitte beachten Sie, dass die ganze Idee ist dies, weil die Portabilität Probleme mit absoluter URLs auf das Formular action-Attribut zu vermeiden und weil der Benutzer die https nicht sehen: // Sicherung visuelle Hinweise auf dem Browser .

P

Antwort

6

Sie vielleicht einen Blick auf die MVC-Futures Montage von Microsoft available for download here.

nehmen möchten Dies hat eine FilterAttribute, RequireSslFilterAttribute, die Ihnen erlaubt, Action-Methoden in Ihrem Controller zu markieren, die SSL erfordern - zum Beispiel

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

Die optionale Umleitung Parameter bewirkt, dass der Antrag auf die gleiche URL umgeleitet werden, sondern über https statt http, falls erforderlich.

ACHTUNG: Wie Daniel bereits erwähnt hat, ist es möglicherweise bereits zu spät, wenn Daten auf eine nicht sichere Version der Seite gepostet wurden - es ist bereits potentiell kompromittiert, so dass Sie immer noch trainieren müssen Achten Sie darauf, dass alle sensiblen Daten über https gesendet werden. (Ich habe gerade deinen Kommentar zu Daniel bemerkt, du verstehst das offensichtlich, ich werde die Warnung hier für jeden anderen hinterlassen, der darauf stolpert!)

EDIT: Wie Luke darauf hinweist, ist dieses Attribut in MVC2 jetzt Teil von Das Core-Framework und wird umbenannt in [RequireHttps]

+0

Vielen Dank, Steve. Genial. –

+0

Entschuldigung, wenn das falsch ist - auch lernen - in MVC 2 sieht es so aus, als wäre dieses Attribut zu RequireHttps geworden. Mehr hier: http://stackoverflow.com/questions/1639707/asp-net-mvc-requirehttps-in-production-only –

+0

Gut entdeckt, danke Luke :) –

0

Gibt es eine Möglichkeit, Protokoll https für jeden Anruf Flip kann, die auf eine Handlung geht, die in der sicheren Zone gehört?

Die kurze Antwort ist nein, sobald die Anfrage über http gekommen ist, wurde bereits potentiell kompromittiert. Sie können verlangen, dass bestimmte Anrufe über das HTTPS kommen (nicht sicher, wie das geht, da ich ASP.Net für eine Weile nicht gemacht habe) und einen Fehler senden, wenn sie nicht tun. Der Schlüssel besteht darin, zu entscheiden, wann die Anwendung den Sprung ausführen soll, dh während der Anmeldung, und HTTPS als Aktion für diese Formulare auswählen. Ist es das, was du unter "Aktionsfilter" verstanden hast?

+0

Sorry Daniel, nicht, wenn Sie die Anfrage bei der GET-Anfrage, die das Formular zurückgibt, spiegeln. Die Abrufanforderung muss nicht sicher sein. Es ist der Beitrag, der es tut. Sie können verlangen, dass bestimmte Anrufe über HTTPS kommen, indem Sie die absolute URL verwenden, was ich vermeiden möchte. Danke, obwohl du versucht hast, mir zu helfen. –