29

每当我登录一项 Google 服务时,我都会自动登录他们在不同域上的所有其他网站。

我想知道的是他们如何能够访问属于另一个域的不同 cookie 和会话。

我尝试在网上搜索,但找不到任何信息。我可能会拔出萤火虫并尝试找出答案,但我相信这里有人知道。

4

1 回答 1

94

Google 登录的工作原理如下:

1) 您通常在 Google.com/accounts 域下的登录页面登录。

1a) 如果您不在 Google.com/accounts 域上,它会在您发布表单后将您转发到那里。这可以在 Blogger 等网站上找到。

到达 Google.com/accounts 域后,他们会做两件事

2) 他们设置了一个特定于 Google.com/accounts 域的 cookie,也只能通过安全连接发送。这是为了稍后验证您的身份。

我说多个是因为有几个 cookie 绑定到 google.com/accounts 域。我相信其中之一是确保在不允许安全连接的情况下一切都不会失败

3) 他们设置了一个 cookie,该 cookie 使用 .google.com 作为其域,跨越所有域,因为这将使 cookie 可用于任何域。

4)他们把你送回去。

5) 如果它是不同域上的站点,比如博客,他们会在 URL 中发送一个授权密钥。页面看到它,验证它,并为不同的域设置 cookie。使用 Google 的 Oauth 可以看到类似的技术。

这就是 Secure Cookie 的用武之地。

如果您注意到,每当您在关闭浏览器后访问某个站点时,他们会将您转发到 google.com/accounts 路径,在那里他们会在安全连接下重新验证​​您,然后重置子域范围的 cookie。然后他们把你送回去。

此外,像 Google Adsense 这样的一些网站使用与 Google.com/accounts 相同的技术,通过在特定路径上创建安全 cookie,然后使用更多全局 cookie 来允许更大的访问。

其中一些是猜测,但考虑到非内部人员可以看到的情况,我相信这接近事实。

注意:我确实花了整整一个月的时间从一个谷歌网站浏览到另一个谷歌网站,看看他们是怎么做的。通过支持这篇文章,你正在减少我对没有生命的悲伤

于 2009-08-05T03:13:00.017 回答