我应该何时在ASP.NET页面生命周期中为安全页面强制执行SSL?
我的意思是我应该在page_load中进行吗?还是OnInit?还是其他一些功能?
我使用以下代码为某些页面强制执行SSL,但是我应该在哪里放置此代码?之前我将它放在OnInit函数中,但是这对ASP.NET向导不起作用。我是否需要先检查是否回发?
if (!HttpContext.Current.Request.IsSecureConnection) {
HttpContext.Current.Response.Redirect(SiteNavigation.ResolveAbsoluteUrl(true, HttpContext.Current.Request.Url.PathAndQuery));
}
答案 0 :(得分:1)
另一个选项是在应用程序之外完成此操作,并在IIS 中强制执行SSL,如果整个站点需要SSL连接。我们在IIS6中通过为同一域名创建两个站点来完成此任务。
mysite.com:80的HTTP 403重定向到网站的SSL版本。 mysite.com:443具有强制执行SSL的实际应用程序。
如果整个站点不需要SSL连接,只是登录页面或站点的其他一些孤立部分而不是Global.asax中的程序方法(Gonzalo提到)可能是最好的方法它会在页面生命周期的早期发现它。
答案 1 :(得分:-1)
如果您要重定向用户,您希望尽可能在生命周期的早期执行此操作,因为在生命周期中花费的任何cpu都将被浪费。在OnInit中进行重定向。