2009-02-19 103 views
8

我读到https连接下运行的页面无法与另一个页面(基于cookie)共享一个InProc会话(或同样的事情)定期http。我的网站运行在Server 2003,IIS 6和.Net 2.0上。如何在http和https之间共享一个asp.net会话

经过一些实验后,似乎在通过https连接时存储会话中的数据的页面CAN随后即使在纯http下运行也可以访问数据。

那么,是否有可能或应该去检查SSL配置中的缺陷?

回答

15

MSDN

当用户移动回安全和公共区, ASP.NET生成会话cookie(或 URL之间来回 如果已经启用了cookie的 会话状态)与他们一起在 明文中移动,但身份验证 cookie永远不会被传递 未加密的HTTP连接只要 由于安全cookie属性设置为

因此基本上,如果Secure属性设置为false,则Cookie可以通过HTTP和HTTPS传递。

我已经加入这个我Global.asax文件避免了这个问题:

void Session_Start(object sender, EventArgs e) 
{ 
    if (Request.IsSecureConnection) Response.Cookies["ASP.NET_SessionID"].Secure = false; 
} 

这意味着,如果通过HTTP创建会话cookie,它只会通过HTTPS访问。

+0

关闭此功能会带来什么样的安全隐患? – 2015-09-03 23:07:57

1

寻找问题到目前为止还没有出现太多讨论,仍在寻找。

编辑:好的现在找到一些东西。

如果两组页面都在同一个应用程序/网站中,它似乎能正常工作。

所以我会继续前进,感觉放心。

5

IIS设置 在IIS属性窗口,ASP的选项卡下 - >会话属性,有一个

我通过设置这个固定的这个间歇性问题,为自己“上的安全连接的新ID”的设置假。

+0

这似乎已在IIS7中消失 - 或者我只是不清楚在哪里可以找到。这是每个站点还是全局的服务器? – 2013-05-04 21:52:38

1

如果上述任何解决方案不起作用,请尝试此操作。经过几天的研究,我已经弄清楚了这一点。

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    ... 
    ... 
    CookieSecure = CookieSecureOption.Never 
}); 
相关问题