多个域的PHP Cookie

kak*_*jee 7 php cookies dns

一旦用户在PHP中注册,我想从一个域创建一个cookie.并使此cookie可供4个其他域而非子域访问.我知道cookie不适用于其他域.例如,我已经从域www.firstdomain.com设置了一个cookie变量$ user_email,并希望在其他域中访问它,如www.seconddomain.com,www.thirddomain.com等.可以使用PHP或JavaScript完成此操作.请问任何想法.

谢谢!

The*_*can 9

在cookie列表中搜索有效的cookie时,将使用从中获取URL的主机的Internet域名来比较cookie的域属性.如果存在尾部匹配,则cookie将通过路径匹配以查看是否应该发送."尾部匹配"表示域属性与主机的完全限定域名的尾部匹配."acme.com"的域属性将匹配主机名"anvil.acme.com"以及"shipping.crate.acme.com".只有指定域中的主机可以为域设置cookie,并且域中必须至少有两(2)或三(3)个句点,以防止表单域:".com",".hadu"和" va.us".在下面列出的七个特殊顶级域之一中失败的任何域只需要两个句点.任何其他域名至少需要三个.七个特殊的顶级域名是:"COM","EDU","NET","ORG","GOV","MIL"和"INT".

domain的默认值是生成cookie响应的服务器的主机名.

这里阅读.

您可以从主机加载iframe,然后使用段部分中的编码cookie值重新加载自身(在#之后).

然后,您可以从父窗口访问document.location属性(命中唯一可访问的内容).解码它并将其传递给服务器执行ajax请求.

这可能是这样的.

xss.php(位于cookies.example.com):

<?php
$data = array(
'uid' => $_COOKIE['uid'],
'loginhash' => $_COOKIE['loginhash']);
header('Location: xss.php#'.urlencode(json_encode($data)));
Run Code Online (Sandbox Code Playgroud)

对于这种特殊情况,它不需要是标签!它只是方便其他情况.这也可以在javascript中完成.

另一个网站嵌入了xss.php:

<iframe id="cookies" src="http://cookies.example.com/xss.php"></iframe>

you need to somehow delay the following of do it in a loop that stops after 5 seconds or something.

if(document.getElementById('cookies').location != 'http://cookies.example.com/xss.php') {
 // read location, extract hashtag, json decode using javscript, there you have your user. send it to server for validation or whatever.
}
Run Code Online (Sandbox Code Playgroud)

这个teqnique被称为xss recieving.它例如被facebook用于他们所有的javascript连接库.

一个可能更好的方法是某种令牌交换协议,如openid.

亚马逊也使用这个.

您可以设置一个openid提供程序(有可用的库可以直接执行此操作)并将其设置为自动重定向,无需用户交互.我经常看到openid协议用于其他目的,就像跨域通信一样.


Gum*_*mbo 6

正如您已经说过的,只能为该域(包括其子域)中的域设置cookie.如果您的域不共享公共超级域,则需要分别为每个域设置每个cookie.

您可以使用在每个域上为您设置cookie的脚本执行此操作.但请确保对这些脚本的请求进行身份验证,以便只有您可以设置cookie.