我知道在 ASP.NET MVC 中访问 SSL 页面的简单方法 - 通过[RequireSSL] 属性,但我对执行相反操作的最佳方法有点困惑。
我的网站上的标题栏中有许多链接,其中大多数链接不需要 SSL,我不想仍然使用 SSL。
futures 项目使得使用 自动重定向到 SSL 页面变得非常容易[RequireSSL(Redirect=true)]
,但似乎并不容易摆脱这种情况并自动重定向回 http。
我错过了什么?
我知道在 ASP.NET MVC 中访问 SSL 页面的简单方法 - 通过[RequireSSL] 属性,但我对执行相反操作的最佳方法有点困惑。
我的网站上的标题栏中有许多链接,其中大多数链接不需要 SSL,我不想仍然使用 SSL。
futures 项目使得使用 自动重定向到 SSL 页面变得非常容易[RequireSSL(Redirect=true)]
,但似乎并不容易摆脱这种情况并自动重定向回 http。
我错过了什么?
你不会错过任何东西;没有开箱即用的功能。您可以通过获取RequireSslAttribute 源并对其进行修改来轻松创建自己的。
从其他地方的欺骗问题中回答:
如何在 asp.net mvc 中从 https 模式跳到 http 模式。
注意:如果选择使用这种方法,您的身份验证 cookie 将在切换回 HTTP 后通过纯文本发送,并且可能会被其他人窃取和使用。看到这个。换句话说 - 如果您将它用于银行网站,您需要确保切换到 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);
}
}
这非常值得一读(特别是要意识到不小心切换回http
from的安全隐患https
:
使用 ASP.NET 的部分 SSL 安全 Web 应用程序- 不是 MVC 特定但相关的安全问题
使用 ASP.NET MVC 的部分 SSL 网站- MVC 友好
总体来说是一个相当复杂的问题。仍然没有找到我想做的所有事情的真正解决方案,但认为这些文章可能对其他人有所帮助。