2009-04-17 21 views
6

Hasta ahora, mis despliegues https han implicado comúnmente un bloqueo ingenuo de todo el sitio con https y proporcionan una redirección http-to-https en el servidor web.Mixto http/https sitio

Ahora planeo tener un único sitio de ASP.NET MVC (en la nube) que contendrá las páginas http y https. Por lo tanto, el sitio tendrá 2 zonas conceptuales (no físicas) que proporcionan solicitudes seguras y no seguras.

En cuanto a la configuración, configuré puertos de entrada para 80 y 443 y el sitio acepta ambas solicitudes.

¿Hay alguna forma de que pueda pasar el protocolo a https para cualquier llamada que vaya a una acción que pertenece a la zona segura? Por ejemplo, el tipo de cosas que los filtros de acción pueden hacer.

Muchas gracias.

edición:Tenga en cuenta que toda la idea de esto es evitar el uso de direcciones URL absolutas en el atributo action del formulario debido a problemas de portabilidad y porque el usuario no verá el https: // señales visuales de aseguramiento en el navegador .

P

Respuesta

6

Es posible que desee echar un vistazo a la asamblea de futuros de MVC de Microsoft available for download here.

Esto tiene un FilterAttribute, RequireSslFilterAttribute que le permite etiquetar fácilmente los métodos de acción en el controlador que requieren SSL - por ejemplo,

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

El parámetro de redireccionamiento opcional hará que la solicitud sea redirigido a la misma URL, sino a través de https en lugar de http, si es necesario.

ADVERTENCIA: como señala Daniel, para el momento en que aciertes a esta Acción, puede ser demasiado tarde si los datos se publicaron en una versión no segura de la página, ya está potencialmente comprometida, por lo que aún necesitas hacer ejercicio Tenga cuidado al usar esto y asegúrese de que todos los datos confidenciales se envíen a través de https. (Me acabo de dar cuenta de tu comentario a Daniel, obviamente entiendes esto, voy a dejar la advertencia aquí para cualquier persona que se tropiece con esto!)

EDITAR: Como señala Luke, en MVC2 este atributo ahora es parte de el marco principal y se renombra a [RequireHttps]

+0

Muchas gracias, Steve. Increíble. –

+0

Disculpa si esto está mal, también aprendiendo: en MVC 2 parece que este atributo se ha convertido en RequireHttps. Más aquí: http://stackoverflow.com/questions/1639707/asp-net-mvc-requirehttps-in-production-only –

+0

Bien visto, gracias Luke :) –

0

¿Hay alguna manera de que pueda voltear el protocolo https para cualquier llamada que se dirige a una acción que pertenece a la zona segura?

La respuesta corta es no, una vez que la solicitud ha llegado a través de http, ya se ha visto comprometida. Puede requerir que ciertas llamadas se reciban a través de HTTPS (no estoy seguro de cómo hacerlo ya que no lo he hecho por un tiempo) y envíe un mensaje de error si no lo hacen. La clave es decidir cuándo quieres que la aplicación haga el salto, es decir, durante el inicio de sesión y elegir el HTTPS como acción para esos formularios. ¿Es eso lo que quisiste decir con 'filtros de acción'?

+0

Lo siento Daniel, no si se da vuelta la solicitud en la solicitud GET que devuelve el formulario. La solicitud de obtención no necesita ser segura. Es la publicación lo que hace. Puede requerir que ciertas llamadas provengan de HTTPS utilizando una URL absoluta, que es lo que pretendo evitar. Gracias, aunque por tratar de ayudarme. –

Cuestiones relacionadas