到目前为止,我的https部署通常涉及使用https对整个站点进行简单锁定,并在Web服务器上提供http-to-https重定向。
我现在计划在一个包含http和https页面的单个ASP.NET MVC站点(在云上)。因此,该站点将有2个概念(非物理)区域,提供安全和非安全请求。
配置方面,我已经为80和443设置了输入端口,并且该站点接受了这两个请求。
对于任何属于安全区域的操作的调用,有没有办法可以将协议转换为https?例如,动作过滤器可以执行的操作。
非常感谢。
编辑 请注意,这样做的全部意图是避免在表格操作属性上使用绝对网址,因为可移植性问题以及用户不会看到https://保证浏览器上的视觉提示。
P
答案 0 :(得分:7)
您可能想看一下来自Microsoft available for download here.
的MVC期货装配这有一个FilterAttribute,RequireSslFilterAttribute,允许您在控制器中轻松标记需要SSL的Action方法 - 例如。
[RequireSsl(Redirect=true)]
public ActionResult LogOn()
{
return View();
}
可选的重定向参数将导致请求被重定向到相同的URL,但如果需要,则通过https而不是http。
警告:正如丹尼尔指出的那样,当你点击这个动作时,如果数据被发布到页面的非安全版本可能已经太晚了 - 它已经可能已经受到损害,所以你仍然需要小心使用此功能时,请确保所有敏感数据都通过https发送。 (我刚刚注意到你对丹尼尔的评论,你明白这一点,我会在这里发出警告,让其他人偶然发现这一点!)
编辑:正如Luke所指出的,在MVC2中,此属性现在是核心框架的一部分,并重命名为[RequireHttps]答案 1 :(得分:0)
对于任何属于安全区域的操作的调用,我有什么方法可以将协议转换为https?
简短的回答是否定的,一旦请求通过http发出,它就已经被潜在危害了。您可以要求通过HTTPS发送某些调用(不知道如何执行此操作,因为我暂时没有完成ASP.Net)并且如果不这样做则发送错误。关键是要确定您希望应用程序何时进行跳转,即在登录期间选择HTTPS作为这些表单的操作。这就是'动作过滤器'的意思吗?