PHPSESSID cookie - 它是否授予访问同一服务器上不同网站的权限?

时间:2013-01-18 19:42:59

标签: php session cookies

这是我想知道的情景。 假设我有以下内容:

  1. 运行以下网站的php / apache网络服务器:

    的/ var / WWW / version1ofmyapp /

    的/ var / WWW / version2ofmyapp /

  2. 在用户的计算机上启用了Cookie。

  3. web app在登录/注销时将数据写入会话
  4. 登录到version1ofmysite(从而创建一个名为PHPSESSID的cookie)是否可以访问version2ofmysite? 例如,我登录到该站点的版本1,然后我将URL更改为版本2,它只是让我进入,就像我已经通过身份验证一样。 我想更好地理解为什么会这样。

    感谢。

    编辑1:

    相同域名

3 个答案:

答案 0 :(得分:1)

为域定义了cookie,可以为路径定义。所以你可以限制发送cookie。

如果您有一个在两个应用程序中使用的sessionID并使用相同的会话存储,则可以访问会话中保存的信息。

因此,您登录的信息将在两个应用程序中使用。您可以更改会话的名称(http://php.net/manual/en/function.session-name.php)以防止这种情况,或更改会话存储(http://php.net/manual/烯/ function.session保存-path.php)

答案 1 :(得分:1)

在php.ini文件中,您可以配置服务器以允许此操作:

session.cookie_domain = ".mydomain.com"

这将允许子域访问cookie。

答案 2 :(得分:1)

Cookie PHPSESSID仅限于创建它的域,并且只会发送到该域或子域。如果您在同一台服务器上有多个域,则每个域都有一个不同的PHPSESSID cookie。

如果您使用子域并且想要在它们之间共享会话,则可以在调用session_start()之前使用session_set_cookie_params($ lifetime_in_seconds,'/','。mydomain.com'),以便在所有子域之间共享同一会话子域。

Cookie的范围是主机名(误导性地称为域名),然后是名称。只有当它们针对不同的域(主机)时,才能有两个名为PHPSESSID的cookie。单个域不能有两个名称相同的cookie。如果您尝试这样做,则会将其视为已设置的更改。