2009-04-17 8 views
6

Jusqu'à présent, mes déploiements de https ont souvent impliqué un lockdown naïf de l'ensemble du site par https et fournir une http à https redirigent sur le serveur Web.mixte site: http/https

Je prévois maintenant d'avoir un seul site ASP.NET MVC (le nuage) qui contiendra les pages http et https. Ainsi, le site aura 2 zones conceptuelles (et non physiques) permettant à la fois des demandes sécurisées et non sécurisées. En ce qui concerne la configuration, j'ai configuré les ports d'entrée pour 80 et 443 et le site accepte les deux demandes.

Est-il possible que je peux retourner protocole https pour tout appel qui va à une action qui appartient dans la zone sécurisée? Par exemple, le genre de choses que les filtres d'action peuvent faire.

Merci beaucoup.

modifier:S'il vous plaît noter que l'idée de ceci est d'éviter d'utiliser des urls absolues sur l'attribut action de forme en raison de problèmes de portabilité et parce que l'utilisateur ne verra pas le https: // assurance des repères visuels sur le navigateur .

P

Répondre

6

Vous pouvez jeter un oeil à l'assemblée à terme MVC de Microsoft available for download here.

Cela a un FilterAttribute, RequireSslFilterAttribute qui vous permet de marquer facilement les méthodes d'action dans votre contrôleur qui nécessitent SSL - par exemple

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

Le paramètre optionnel redirect entraînera la demande d'être redirigé vers la même URL, mais par https au lieu de http si nécessaire. AVERTISSEMENT: Comme Daniel le fait remarquer, au moment où vous atteignez cette Action, il est peut-être déjà trop tard si les données ont été postées sur une version non sécurisée de la page - elle est déjà potentiellement compromise. attention lors de l'utilisation et assurez-vous que toutes les données sensibles sont envoyées via https. (Je viens de remarquer votre commentaire à Daniel, vous comprenez évidemment cela, je vais laisser l'avertissement ici pour quelqu'un d'autre qui trébuche sur ce point!)

EDIT: Comme le souligne Luc, dans MVC2 cet attribut fait maintenant partie de le cadre de base et est renommé en [RequireHttps]

+0

Merci beaucoup, Steve. Impressionnant. –

+0

Excuses si cela est faux - apprendre aussi - dans MVC 2, il semble que cet attribut est devenu RequireHttps. Plus ici: http://stackoverflow.com/questions/1639707/asp-net-mvc-requirehttps-in-production-only –

+0

Bien repéré, merci Luke :) –

0

Est-il possible que je peux retourner protocole https pour tout appel qui va à une action qui appartient dans la zone sécurisée?

La réponse courte est non, une fois que la requête est arrivée via http, elle a déjà été potentiellement compromise. Vous pouvez exiger que certains appels viennent via HTTPS (je ne sais pas comment faire cela car je n'ai pas fait ASP.Net depuis un certain temps) et envoyer une erreur si ce n'est pas le cas. La clé est de décider quand vous voulez que l'application fasse le saut, c'est-à-dire pendant la connexion et choisissez le HTTPS comme action pour ces formulaires. Est-ce ce que vous vouliez dire par «filtres d'action»?

+0

Désolé Daniel, pas si vous retournez la demande à la demande GET qui retourne le formulaire. La requête get n'a pas besoin d'être sécurisée. C'est le post qui le fait. Vous pouvez exiger que certains appels viennent via HTTPS en utilisant l'URL absolue, ce que j'ai l'intention d'éviter. Merci, mais pour avoir essayé de m'aider. –