2008-11-24 90 views

回答

17

在这两个域上,放置从其他域拉出的图像或其他Web元素。使用该URL来通知其他域的用户X位于域A上,并让域B将该用户ID与其系统上的该用户相关联。

执行正确有点复杂,但如果你认为它会实现的很好。 Vinko在评论中指出(谢谢!)我不应该理所当然地理解所涉及的安全风险。如果这些信息对任何人都有价值,那么你应该确保你使用适当的加密,认证等来避免释放敏感信息并避免各种攻击(重放,中间人等)。这不应该太过繁重,因为您控制了这两个网站,并且您可以为这两个网站选择一个安全的密钥,因为通信只通过这个特殊的URL在两个服务器之间进行。请记住它。

- 亚当

1

你不这样做,饼干被绑定到一个域。这有限制,它被称为跨站点脚本。

现在,为您的问题提供一些帮助。 你可以做的是创建一个脚本来帮助弥合它们。

您可以在全球范围内重写您的第二个网站的所有链接都需要来自第一个网站的Cookie信息。

你会保存所有的Cookie从站点A到它们都可以读取,然后编程附加上所有链接站点B的cookie的ID查询字符串的数据库,那么可以查找该cookie ID和重新在新域名下设置Cookie。

有一个非常好的PHP数据库抽象库(PHP ADODB),它有一个会话共享插件,使所有这一切变得更容易。

1

那么,如果你的域名只是不同的子域名,你可以通过创建一个.yourdomain.com cookie以简单的方式做到这一点。然后,cookie将与所有子域中的所有请求一起传递。

这不是那么简单,如果你想在不同的域之间共享cookie,因为浏览器把它当作安全风险。

确切的例子是什么?

如果有一些软件如Google Analytics和其他跟踪图像等,您可能会被迫使用P3P头让浏览器知道你发送cookie时不关心安全性。然后,一个请求图像的浏览器获取一个cookie作为响应的一部分,并检查P3P。如果一切正常,它会将该Cookie保存在硬盘驱动器上,并且下一次请求位于您网站上的图像(但是是其他域网页的一部分)时,浏览器将一起发送Cookie。但我想这没有帮助;-)

我从来没有使用过一个直接意义的域的cookie值。

1

我不确定安全含义,但有一个Apache设置,允许您更改cookie的域。

# in httpd.conf (or equivalent) 
php_value session.cookie_domain mydomain.com 

我成功地将这种方法用于子域,但从未尝试过不同的域。

还有一种方法可以在http://us.php.net/manual/en/function.session-set-cookie-params.php中描述的PHP中设置变量方向。该文档没有提及是否有能力或无法在不同的域上设置Cookie。

有这个同一主题的不同Stack Overflow thread,但我不认为这是以往任何时候都充分的回答。

3

如果您在使用相同的域两个网站,并希望他们之间共享的cookie,你settings.php文件为每个域设置是这样的:

ini_set('session.cookie_domain', '.EXAMPLE.com'); 

确保您包括开头的“”在域名之前,或者它不起作用。

这允许用户在为全域范围Cookie配置的任何站点之间保持登录状态。

这也会产生负面影响,所以不要这样做,除非您熟悉所有涉及您希望在其间共享Cookie的网站所涉及的Cookie。