我知道在ASP.NET MVC中访问SSL页面的简单方法 - 通过[RequireSSL] attribute,但我对相反的最佳方法感到困惑。
我的网站上的标题栏中有很多链接,大部分链接都不需要SSL,我也不想使用SSL。
期货项目可以很容易地使用[RequireSSL(Redirect=true)]
自动重定向到SSL页面,但它似乎不容易退出此上下文并自动重定向回http。
我错过了什么?
答案 0 :(得分:4)
你没有遗漏任何东西;这没有开箱即用的功能。您可以通过the RequireSslAttribute source并修改它来轻松创建自己的。
答案 1 :(得分:1)
从其他地方的欺骗问题中回答:
How to step out from https to http mode in asp.net mvc.
注意:如果选择使用此方法,您的身份验证Cookie将在切换回HTTP后通过纯文本发送,并且可能被其他人窃取和使用。 See this。换句话说 - 如果您将其用于银行网站,则需要确保切换到http 首先将用户注销。
public class DoesNotRequireSSL: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var request = filterContext.HttpContext.Request;
var response = filterContext.HttpContext.Response;
if (request.IsSecureConnection && !request.IsLocal)
{
string redirectUrl = request.Url.ToString().Replace("https:", "http:");
response.Redirect(redirectUrl);
}
base.OnActionExecuting(filterContext);
}
}
答案 2 :(得分:0)
这非常值得一读(特别是为了实现从http
不小心切换回https
的安全隐患:
Partially SSL Secured Web Apps With ASP.NET - 不是MVC特定但相关的安全问题
Partial SSL Website with ASP.NET MVC - MVC友好
这是一个非常复杂的问题。仍然没有找到我想做的所有事情的真正解决方案,但认为这些文章可能会帮助其他人。