跨域cookie跟踪

时间:2010-03-11 17:34:20

标签: php cookies cross-domain

我工作的公司有四个域,我正在尝试设置cookie,因此可以在所有域中生成和跟踪一个cookie。通过阅读这里的各种帖子,我认为这是可能的。

我在一个网站上设置了一个子域,为所有四个站点提供cookie和1 * 1像素图像。

但是我无法在其他网站上使用它。

如果有人可以澄清:

  1. 可能吗?
  2. 如果我遗漏了一些明显的东西,或者是一个很好的例子的链接?
  3. 我正在尝试用PHP做这个服务器端。

    由于

3 个答案:

答案 0 :(得分:1)

您是否因Internet Explorer及其隐私问题而遇到问题? Session variables are lost if you use FRAMESET in Internet Explorer 6

回到我以前的互联网时代,当IE6首次出现时,我们必须实现这一点,因为它打破了我们的一些跟踪。令人惊讶的是,你所要做的就是假装它,一切正常。

您在正确的轨道上,我们有一个托管跟踪cgi的域,该域提供1x1透明像素,并跟踪用户正在访问的页面。然后我们有一个自定义解析器,它将该数据与Apache日志结合起来,并通过我们的网站动态创建用户流量模式图。这是使用Graphviz包中的点。

答案 1 :(得分:0)

如果你只是想做统计数据,这种事情很容易,但是如果你真的试图在域之间保留用户数据,你将不得不做更复杂的事情。

设置跨域Cookie的最佳方法是确保所有网站都是一个主域的子域,比如initech.com。因此,您的某个站点site1.initech.com将Cookie设置为“.initech.com”域,并且工作正常。

如果您的网站位于完全不同的域中,则可能会出现问题。

您不必尝试设置每个网站可以访问的一个Cookie,而是要确保每个网站都有自己与原始Cookie完全相同的副本。因此,让您的站点site1.com为自己设置cookie并输出三个1x1 GIF或AJAX调用或其他任何内容,以将site2.com,site3.com和site4.com设置为相同的cookie。

这将很难安全可靠地进行;)

要确保某人无法在您的域上设置任意Cookie,您需要在图片代码上传递Cookie值的哈希值。如果要设置的cookie是“mycookieval”,也要通过md5(“mycookieval”。“somesecretstring”。$ _ SERVER ['REMOTE_ADDR'])。这可能很糟糕,因为它可能允许攻击者将相同的cookie设置为相同的IP地址,或者可能使暴力生成暴力破解。

您可以通过在设置cookie时将记录插入后端数据库并让其他三个站点检查其有效性来补偿这一点。

答案 2 :(得分:0)

这个问题很冷,但是如果其他任何人绊到它,或者OP仍然有需要,我创建了一个NPM模块,该模块允许您跨域共享本地存储的数据。看起来这完全可以满足OP的需求,并且不需要所有站点都共享基本域。

通过使用托管在域A上的iframe,您可以将所有用户数据存储在域A上,并通过将请求发布到域A iframe来引用这些数据。

因此,域B,C等可以注入iframe并向其发布请求以存储和访问所需数据。域A成为所有共享数据的中心。

使用域A内的域白名单,可以确保只有从属站点可以访问域A上的数据。

诀窍是将代码放在域A的iframe中,该代码能够识别正在请求的数据。上面的NPM模块中的README对该过程进行了更深入的介绍。

希望这会有所帮助!