24

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

4

5 に答える 5

17

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

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

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

-アダム

于 2008-11-24T19:19:38.823 に答える
1

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

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

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

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

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

于 2009-05-27T08:41:39.733 に答える
1

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

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

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

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

非常に優れた PHP データベース抽象化ライブラリ ( PHP ADODB ) があり、セッション共有プラグインを使用して、これらすべてを非常に簡単に行うことができます。

于 2008-11-24T19:26:16.190 に答える
1

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

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

正確な例は何ですか?

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

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

于 2008-11-24T19:28:55.250 に答える
1

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

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

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

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

これと同じトピックに関する別のスタック オーバーフロー スレッドがありますが、十分な回答が得られたとは思いません。

于 2008-11-24T20:02:20.687 に答える