CakePHP饼干被炒了-与苏霍辛有关

CakePHP饼干被炒了-与苏霍辛有关,php,cakephp,suhosin,Php,Cakephp,Suhosin,由于某些原因,我无法在任何页面上读取我的CakePHP应用程序中设置的任何cookie,唯一返回的是乱码文本 我的代码如下所示: $this->Cookie->write('Region', 'test'); $reg = $this->Cookie->read('Region'); pr($reg); 我取消注释$this->Cookie->write()行,得到的只是一堆随机控制字符。我最近还升级到了CakePHP1.3,但恐怕这不会对cookie造成这样的影响。。

由于某些原因,我无法在任何页面上读取我的CakePHP应用程序中设置的任何cookie,唯一返回的是乱码文本

我的代码如下所示:

$this->Cookie->write('Region', 'test');
$reg = $this->Cookie->read('Region');
pr($reg);
我取消注释$this->Cookie->write()行,得到的只是一堆随机控制字符。我最近还升级到了CakePHP1.3,但恐怕这不会对cookie造成这样的影响。。。 在我更换服务器之前,这一切都很正常,这一定是我问题的根源

更新
在进一步研究之后,我发现这是一个已知的问题,Suhosin的PHP安全补丁影响了rand()和srand()方法,我已经将Suhosin配置为允许rand()函数,但它仍然在发生,是否有更有效的解决方法?

CakePHP默认加密cookies

您的Security.salt值在此新安装中是否相同


cookie控制器设置中的$key值如何?

请尝试以下代码,该代码将禁用cookie加密:

$this->Cookie->write('Region', 'test', false);
$reg = $this->Cookie->read('Region');
pr($reg);
write方法具有以下参数:

write(混合$key、混合$value、布尔$encrypt、混合$expires)


默认情况下,cookie中的所有值都由CakePHP加密。但是,出于安全原因,您可能希望研究使用加密。

文件实际上只是复制过来的,它在没有加密的情况下工作,因此这一定是问题所在。我根本没有使用$key值,我需要使用1.3吗?当我关闭$encrpyt时,它会工作,但是为什么不能使用默认值呢?你的服务器上有Suhosin安全补丁吗?好的,回头看看这个问题,我的服务器上有Suhosin补丁Suhosin在我相信CakePHP代码使用的任何rand()之前添加了一个srand()调用。如果你移除了Suhosin补丁,你会体验到你所期望的行为。但是,如果可能的话,我仍然建议您使用加密选项。