web-dev-qa-db-ja.com

2つの異なるドメインでCookieを使用するにはどうすればよいですか?

2つの異なるドメイン間でSSO情報をCookieを使用して共有する必要があります。これは、PHPでどのように行うことができますか?

23
danielrsmith

両方のドメインに、他のドメインから取得した画像または他のWeb要素を配置します。 URLを使用して、ユーザーXがドメインAにいることを他のドメインに通知し、ドメインBにそのユーザーIDをシステム上のそのユーザーに関連付けさせます。

正しく実行するのは少し複雑ですが、それを考えれば非常にうまくいくでしょう。

ヴィンコはコメントの中で(ありがとう!)、セキュリティ上のリスクを理解していることを当然のことと思ってはいけないと指摘しています。この情報がだれにとっても価値がある場合は、適切な暗号化、認証などを使用して、機密情報の公開を回避し、さまざまな攻撃(リプレイ、中間者など)を回避する必要があります。通信はこの特別なURLを介して2つのサーバー間でのみ行われるため、両方のWebサイトを制御し、両方に安全な秘密鍵を選択できるため、これはそれほど面倒なことではありません。ただし、覚えておいてください。

-アダム

17
Adam Davis

同じドメインを使用している2つのサイトがあり、それらの間でCookieを共有したい場合は、各ドメインのsettings.phpファイルに次のように設定します。

ini_set('session.cookie_domain', '.EXAMPLE.com');

必ず先頭の「。」を含めてください。ドメイン名の前にあると、機能しません。

これにより、ユーザーはドメイン全体のCookie用に構成されたサイト間でログインステータスを維持できます。

これにはマイナスの副作用もある可能性があるため、Cookieを共有するサイトに関連するすべてのCookieに精通している場合を除いて、これを行わないでください。

2
lokesh

そうではありません。Cookieはドメインにバインドされています。これには制限があり、クロスサイトスクリプティングと呼ばれます。

さて、あなたの問題へのいくつかの助けのために。あなたができることは、それらを橋渡しするのに役立つスクリプトを作成することです。

2番目のサイトへのすべてのリンクをグローバルに書き換えることができます。最初のサイトからのCookie情報が必要になります。

サイトaのすべてのCookieを両方が読み取れるデータベースに保存し、プログラムでサイトbへのすべてのリンクにCookie-IDクエリ文字列を追加してから、そのCookie IDを検索し、下のCookieを再設定します。新しいドメイン。

本当に良いPHPデータベース抽象化ライブラリ( PHP ADODB )があり、これをすべて簡単にするセッション共有プラグインがあります。

1
chews

ドメインが異なるサブドメインである場合は、.yourdomain.comCookieを作成することで簡単に行うことができます。次に、Cookieは、すべてのサブドメイン間ですべてのリクエストとともに渡されます。

ブラウザがCookieをセキュリティリスクとして扱うため、異なるドメイン間でCookieを共有する場合はそれほど簡単ではありません。

正確な例は何ですか?

Google Analytics やその他の追跡画像などのソフトウェアの場合、送信時にセキュリティを気にしないことをブラウザに通知するために P3P ヘッダーを使用せざるを得ない場合がありますあなたのクッキー。次に、画像を要求しているブラウザは、応答の一部としてCookieを取得し、P3Pも検査します。すべてがOKの場合、Cookieはハードドライブに保存され、次にWebサイトにある(ただし他のドメインページの一部である)画像を要求すると、ブラウザーはCookieを送信します。しかし、これは役に立たないと思います;-)

直接的な意味でドメイン間でCookie値を使用したことはありません。

1
Artur Ejsmont

セキュリティへの影響についてはよくわかりませんが、Cookieのドメインを変更できるApache設定があります。

# in httpd.conf (or equivalent)
php_value session.cookie_domain mydomain.com

私はサブドメインにこの方法をうまく採用しましたが、異なるドメインに対して試みたことはありません。

PHPで説明されている http://us.php.net/manual/en/function.session-set-cookie-params)で変数の方向を設定する方法もあります。 .php 。ドキュメントでは、別のドメインにCookieを設定する機能または機能について言及していません。

この同じトピックには別の Stack Overflowスレッド がありますが、十分に答えられたとは思いません。

1
KDrewiske