【问题标题】:shared session-state over subdomain子域上的共享会话状态
【发布时间】:2011-08-26 17:09:16
【问题描述】:

我阅读了数千份文档,但对我没有任何帮助。

1) 我想要什么:在我的服务器端,我使用了以下变量:

(string)Session["myData"]

2) 当我更改子域时

www.myDomain.com/myPage.aspx
OR
myDomain.com/myPage.aspx
OR
myUser.myDomain.com/myPage.aspx

我的问题:当我从一个域转到另一个域时,我丢失了会话数据。

3) 我只想通过 cookie 和 inproc 模式保持会话状态:

  <sessionState mode="InProc" cookieless="UseCookies"  cookieName="myDomain.com" timeout="10000">     </sessionState>
  <authentication mode="Windows"/>

我在 web.config 中添加了:

<httpCookies domain="myDomain.com"  />

 <httpCookies domain=".myDomain.com"  />  

 <httpCookies domain=".myDomain.com" httpOnlyCookies="true" />

但没有任何效果。

感谢您的任何建议。

【问题讨论】:

    标签: asp.net session web-config session-state


    【解决方案1】:

    简短的回答,您无法满足所有条件。

    可能的解决方案:

    • 将传入域为“xxx.myDomain.com”的任何请求重定向到公共“www.myDomain.com”。这可能涉及将“myUser.myDomain.com”更改为“www.myDomain.com/default.aspx?&user=myUser”。因为它是一个重定向,所以您的用户会看到他栏中的地址发生了变化,因此将获得一些关于您网站背后的香肠制作的知识(对攻击者有用)。
    • 切勿在您自己的站点中明确引用您的域。所有 URI 都应该相对于您的 Web 结构的根。这应该可以让您避免更改域并因此丢失会话状态。
    • 使用 SQLServer 管理会话状态:http://support.microsoft.com/kb/2527105。这将需要将会话处理从带有 cookie 的 InProc 更改为 SQLServer,以及其他一些配置更改。

    【讨论】:

    • 感谢您的回答...这正是我所害怕的。如果没有人有一个棘手的解决方案,我会给你投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2011-02-19
    • 2011-04-14
    • 1970-01-01
    相关资源
    最近更新 更多