CakePHP Cookies变得混乱 - Suhosin相关

Dun*_*zzz 7 php cakephp suhosin

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

我的代码就像这样简单:

$this->Cookie->write('Region', 'test');
$reg = $this->Cookie->read('Region');
pr($reg);
Run Code Online (Sandbox Code Playgroud)

我取消注释$ this-> Cookie-> write()行,我得到的是一堆随机控制字符.我最近也升级到了CakePHP 1.3,但AFAIK这不应该影响这样的cookie ......这个工作正常,直到我更换服务器,这一定是我问题的根源.

更新 在进一步探测之后我发现这是一个已知的问题,用于PHP的Suhosin安全补丁影响rand()和srand()方法,我已经配置了Suhosin以允许rand()函数但是它仍在发生,是否存在那里有更有效的工作吗?

Chr*_*son 7

试试这个禁用cookie加密的代码:

$this->Cookie->write('Region', 'test', false);
$reg = $this->Cookie->read('Region');
pr($reg);
Run Code Online (Sandbox Code Playgroud)

write方法有以下参数:

write(mixed $key, mixed $value, boolean $encrypt, mixed $expires)

默认情况下,Cookie中的所有值都由CakePHP加密.但出于安全原因,您可能希望考虑使用加密.

  • Suhosin在任何rand()之前添加一个srand()调用,我相信CakePHP代码可以使用它.如果您删除了Suhosin补丁,您将体验到您期望的行为.但是,如果可能的话,我仍然建议您使用加密选项. (2认同)