【问题标题】:Set session for different domains from the same server?为来自同一服务器的不同域设置会话?
【发布时间】:2010-11-11 14:33:17
【问题描述】:

有谁知道我是否可以为当前域设置会话值,并将此会话用于另一个域?

例如:

当我在域 www.aabc.com 中设置会话并且我希望此会话也可以在域 www.ccc.com 中工作时——我单击 www.aabc.com 中的一个按钮并将标题更改为 www.ccc .com?

【问题讨论】:

    标签: cookies cross-domain


    【解决方案1】:

    我必须在上一份工作中进行设置。它的处理方式是通过一些挥手和半安全的哈希传递。

    基本上,每个站点(站点 A 和站点 B)在每个域上都有相同的网关设置。网关接受user IDtimestampredirect URLhashhashshared keytimestampuser ID 组成。

    站点 A 生成哈希并将上面列出的所有信息发送到站点 B 的网关。然后站点 B 使用 shared key 对接收到的 user IDtimestamp 进行哈希处理。

    如果生成的哈希与接收的哈希匹配,则网关将用户登录并从共享内存表或 memcached 池加载他们的会话,并将用户重定向到接收的redirect url

    最后,timestamp 用于确定提供的传递的hash 的到期时间(例如:哈希仅对x 时间有效)。我们为 TTL 使用的时间大约是 2.5 分钟(考虑到网络延迟,可能还有一两次刷新)。

    这里的重点是:

    • 拥有可以序列化会话的共享资源
    • 使用共享密钥创建和确认哈希(如果要使用 md5,请执行多次传递)
    • 只允许哈希在一小段但合理的时间内有效。
    • 这需要控制两个域。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      您不能直接访问两个域会话,但是,有一些合法的解决方案可以在您控制的两个站点之间传递会话数据。对于可能被篡改的数据,您可以简单地让域 abc.com 上的页面在 xyz.com 上加载 1px x 1px “图像”,并在查询字符串中传递适当的数据。这是非常不安全的,因此请确保用户不会通过篡改来破坏任何东西。

      另一种选择是使用某种公共商店。如果他们可以访问同一个数据库,这可以是域 abc.com 存储记录的表,然后将记录的 id 传递给域 xyz.com。如果您尝试传递登录信息,这是一种更合适的方法。只需确保您混淆了 id,这样用户就无法猜测另一个记录 id。

      如果这两个域位于不同的服务器上或无法访问相同的数据库,则另一种通用存储方法的方法是实现某种缓存存储服务,该服务将存储一段时间的信息并且两个域都可以访问。域 abc.com 传入一些数据,并且服务将域 abc.com 发送到域 xyz.com 的 ID 传回,然后返回到请求数据的服务。同样,如果您自己开发此服务,请确保混淆 ID。

      【讨论】:

        【解决方案3】:

        您只能为您的域(以及您域上的其他站点,如子域,如果我没记错的话)设置 cookie。

        这是(主要是?)出于安全原因:否则,任何人都可以为任何网站设置 cookie...我让你想象一下混乱 ^^

        (为另一个域设置 cookie 的唯一方法似乎是利用浏览器的安全漏洞 - 参见 http://en.wikipedia.org/wiki/Cross-site_cooking 例如;因此,在正常情况下,这是不可能的 - 很高兴)

        【讨论】:

        • 好吧,在我写答案的时候,您编辑了您的问题以放置“会话”而不是“cookie”;我的回答保持不变,因为用户与其会话之间的链接通常保存在 cookie 中。而且,由于会话的数据通常保存在网络服务器上的文件中,因此在网站之间共享它更加困难(不过,我想,如果您的服务器没有得到适当的保护,您可以从托管在其上的另一个网站访问会话文件 - - 但不好^^)
        猜你喜欢
        • 2021-07-27
        • 1970-01-01
        • 2012-01-30
        • 2011-01-15
        • 1970-01-01
        • 2012-01-20
        • 2017-05-22
        • 1970-01-01
        • 2014-04-16
        相关资源
        最近更新 更多