4

背景:

CakePHP は、PHPSESSID の他に独自のセッション ID Cookie を書き込みます。これは、リクエストを認証するために使用されます。次に、SWFupload がファイルと認証するトークンを送信し、新しいユーザー エージェントとして取得されます。そのため、cakephp で「check-user-agent」セキュリティ機能を無効にする必要があります。

多くのブラウザではこれで十分です。IE7 版と SWF 版では、このバグとの関連はないようです。私たちの場合、IE7 は同じ Cookie の 2 つのバージョンを保存/送信していました。では、最初の質問はなぜですか?どのように?

さらなる説明:

これらの重複した Cookie はヘッダー文字列の最初と最後に保存されるため、PHP/Cake は一方の端を受け取り、一方が「選択」され、swfobject で設定して送信した手動の Cookie がもう一方の Cookie になります。これを修正するためのいくつかのハックを考えることができますが、そもそもこの状態がどのように発生するかを知りたいです.

また、CakePHP は、ログアウトとログイン時に一意の CakeSession ID を生成しないようです。これが原因である可能性があります。解決策は、cake に強制的に PHPSESSID を使用させるか、swfupload が正しい SESSID を送信するようにすることです...

編集 1: CakePHP によって送信される Cookie のヘッダーは次のとおりです。

Set-Cookie: CAKEPHP=gqlpa88blmhmdsmv9e99ga16b3; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/
Set-Cookie: CAKEPHP=deleted; expires=Wed, 06-Aug-2008 13:21:01 GMT; path=/
Set-Cookie: CAKEPHP=ob5695trnspprlohiunrpqgkm0; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/

どんなアイデアでも大歓迎です!

4

2 に答える 2

7

異なるドメインまたはパスに設定されている場合、2 つの Cookie が同じ名前を持つことがあります。

たとえば、「www.example.com」と「example.com」に Cookie「ID」を設定すると、「www.example.com」または「何か」のすべてのリクエストに対して 2 つの ID Cookie が送信されます。 www.example.com".

これを防ぐには、同じドメインに対して一貫して Cookie を設定していることを確認し、複数のドメイン名が同じサーバー (www.example.com と example.com など) にエイリアスされている場合は、一方を他方にリダイレクトします。 .

同様に、異なるパス値を持つ同じ名前の Cookie を設定しないでください。

于 2009-08-07T01:32:01.570 に答える