
对于以下场景: 有 API 服务器 a.com ,同一个用户在 b.com 和 c.com 调用 a.com 的 API 的时候,a.com 可以识别到这是同一个用户。
或者说,在 b.com 登录 a.com 之后,c.com 访问 a.com 的 API 也是登录状态。
如果浏览器没有开启第三方 Cookies 保护,有以下这些隐式的方法:
如果浏览器开启了禁止 第三方 Cookies,对于一些浏览器,上述的第三个仍然可以使用,但是 Safari 均不行。而且 Safari 默认禁止第三方 Cookies,如果需要用户开启,这也看作是 显式 的方法。
在禁止第三方 Cookies 的情况下,Facebook 以前使用了一种浏览器指纹的技术进行隐式追踪,来识别用户,这对于大多数浏览器仍然可行,但是苹果今年在开发者大会上面说,“我们只提供了一个简化的系统配置,因此,你的 Mac 看起来更像其他所有人的 Mac 电脑,而数据公司要想识别你的设备并追踪你,将会变得更加困难”,说明,这个路径也被堵死了。
另外,还有一些是可行的跨多域方法,但是都是显式的,我列出来,以免大家回复的时候误会
当然,为了防止还是有人出来杠我,我再提一下 jsonp, 普通 CORS, localstorage 和 document.cookie,这些虽然是隐式的,也可以做所谓的跨域,但是不能跨多域,在 b.com 获取到的 token/cookies,c.com 不知道,在 c.com 仍然需要重新获取 token
1 martyartrt1 Dec 25, 2018 我有看到用 chrome 插件 和 服务器 进行同步 cookie 的 |
2 gonghao Dec 25, 2018 |
4 |
8 Chingim Dec 25, 2018 via Android 小弹窗应该被浏览器 block 吧,选项 2 也可以去掉了 |
9 lhx2008 OP @Chingim 不会的,点击那个链接上面的弹窗事件不会被 block,比如分享到微博啥的,我博客 https://luan.ma 的评论也是弹窗登录的,没问题 |
13 yksoft1 Dec 25, 2018 WebSocket 可不可以连接到第三方? |
14 lhx2008 OP |
15 rayhy Dec 25, 2018 via Android 想问类似 Google analysis 这种产品也做不到识别多个网站的相同用户吗?如果能,它是怎么做到的? |
16 ccceeeooo Dec 25, 2018 |
17 chinvo Dec 25, 2018 via iPhone @rayhy #15 他本质上是用的 Google.com 域名下的 cookie,并没有跨域读写 |
18 lhx2008 OP |
19 lhx2008 OP @rayhy GA 好像没有做跨站追踪。但是 Google 肯定有,而且 chrome 本身也不会把第三方 cookies 关闭,而且还给自己设置的 cookies 开后门不让你清除。 |
20 lhx2008 OP 跨站追踪用那个 iframe 的方法就可以做,大网站因为你访问过,所以在非 iframe 显式设置的 cookies,在别的网站用 iframe 可以隐式读到( postMessage ),比如在嵌入 GGAD 的网站,所以可以跟踪你的网络请求。所以我觉得这就是他们给大公司开的后门吧,哈哈 @rayhy |
21 ccceeeooo Dec 25, 2018 |