【问题标题】:CakePHP Cookies getting scrambled - Suhosin relatedCakePHP Cookies 被打乱 - Suhosin 相关
【发布时间】:2011-01-18 12:55:40
【问题描述】:

由于某种原因,我无法在任何页面上从我的 CakePHP 应用程序中读取任何 cookie 设置后,返回的唯一内容是乱码。

我的代码就这么简单:

$this->Cookie->write('Region', 'test');
$reg = $this->Cookie->read('Region');
pr($reg);

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

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

【问题讨论】:

    标签: php cakephp suhosin


    【解决方案1】:

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

    $this->Cookie->write('Region', 'test', false);
    $reg = $this->Cookie->read('Region');
    pr($reg);
    

    write方法有以下参数:

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

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

    【讨论】:

    • 当我关闭 $encrpyt 时它可以工作,但为什么它不能使用默认值?
    • 你的服务器上有 Suhosin 安全补丁吗?
    • 好吧,回头看看这个问题,是的,我的服务器上确实有 Suhosin 补丁
    • Suhosin 在我相信 CakePHP 代码使用的任何 rand() 之前添加了一个 srand() 调用。如果您删除了 Suhosin 补丁,您将体验到您所期望的行为。但是,如果可能,我仍然建议您使用加密选项。
    【解决方案2】:

    CakePHP 默认加密 cookie。

    您的 Security.salt 值在这个新安装中是否相同?

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

    【讨论】:

    • 文件实际上只是复制过来的,它没有加密就可以工作,所以这一定是问题所在。
    • 我根本没有使用$key值,我需要用1.3吗?
    猜你喜欢
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2019-02-14
    • 1970-01-01
    • 2011-10-26
    • 2012-07-30
    相关资源
    最近更新 更多