7

何らかの理由で、Cookie が設定された後、どのページの CakePHP アプリからも Cookie を読み取ることができません。返されるのは文字化けしたテキストだけです。

私のコードは次のように単純です。

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

$this->Cookie->write() 行のコメントを外すと、返されるのは一連のランダムな制御文字だけです。私も最近 CakePHP 1.3 にアップグレードしましたが、私の知る限り、これはこのような Cookie に影響を与えるべきではありません...これはserver を変更するまで正常に機能していました。これが私の問題の根本に違いありません。

更新 さらに調査した結果、これは PHP の Suhosin セキュリティ パッチが rand() および srand() メソッドに影響を与える既知の問題であることを発見しました。Suhosin を設定して rand() 関数を許可しましたが、まだ発生していますか?より効果的な回避策はありますか?

4

2 に答える 2

7

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 によって暗号化されます。ただし、セキュリティ上の理由から、暗号化の使用を検討することをお勧めします。

于 2011-01-18T13:01:10.650 に答える
1

CakePHP はデフォルトで Cookie を暗号化します。

この新しいインストールで Security.salt の値は同じですか?

Cookie コントローラーの設定で $key の値はどうですか?

于 2011-01-18T13:00:39.173 に答える