最近版本中的PHP cookie行为更改

时间:2009-12-29 17:11:40

标签: php cookies

我有一个使用第三方登录机制在内部编写的网站。

最近我们被要求保持PCI合规性,并且我在环境中做了很多改变。我们发现cookie出现问题后不久。我已经回滚了所有的更改,除了从php 5.3转回到5.2.11或者其他任何更难的更新。

这是发生了什么。对于我们自己的内部管理,我编写了一个登录页面,将用户的名称和密码作为查询字符串。每个用户的管理页面将有一个“成为”链接,让我们以该人身份登录。该页面将使用用户的cookie覆盖管理员的cookie,我们就是他们。据我所知,它没有删除任何cookie,只是覆盖。它起作用,直到最近。是的,不安全,但它是内部的,请原谅我。

现在,当我们关注链接时,我们的管理员会留下管理员。成为客户的唯一方法是注销,然后输入他们的用户名/密码。

我注意到的另一件事是,为网站的每个子目录设置了cookie,之前我认为网站本身只有一个。但我并不认为这已经发生了变化,之前可能有子目录......

所以,我希望问题在于PHP在5.3中处理cookie,或者不再覆盖现有的cookie,或者创建特定于目录的cookie而不是站点范围。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

根据this,$ _COOKIE值不再流入$ _REQUEST,虽然我找不到官方确认。如果这是真的,并且您的应用程序使用$ _REQUEST来加载管理员ookies,那么可能就是这样。 Cookie已设置,但永远不会进入您的身份验证机制。因为普通用户是通过会话而不是cookie来识别的,所以没有问题。

但这也可能是浏览器行为更改或服务器环境的变化。可能值得确认它的确切来源。

对于旧浏览器是否也会发生这种情况,比如Firefox 2?

如果确实如此,您是否可以切换回较旧的PHP版本,看看会发生什么?