7

私は現在、複数のドメインにまたがるプロジェクトに取り組んでいます。私が望むのは、ユーザーが 1 つのサイトにログインし、同時に他のすべてのサイトにログインできるようにすることです。

ユーザー セッションはデータベースに保存され、各ドメインに設定した Cookie にはセッション ID が含まれています。

基本的に、ユーザーが example.com にログインすると、セッション ID を使用して Cookie が作成され、セッション データがデータベースに保存されます。これが完了したら、この一意のセッション ID を持つ他のすべてのドメインで Cookie を作成する必要があります。これにより、ユーザーがサイト間を移動するときに自動的にログインできるようになります。

今、Firefoxでこれを行う方法を見つけました(他のドメインでPHPスクリプトを実行するイメージタグを使用し、基本的に異なるドメインで異なるCookieを作成します)が、この方法はIEでは機能しません(Operaまたはサファリなどはまだ)。

これを IE で動作させる方法について、誰かアイデアはありますか?

4

5 に答える 5

3

私の質問Cross Domain User Trackingを見てください。

「画像」に別の HTTP ヘッダーを追加する必要があります。

Internet Explorer 6 で FRAMESET を使用すると、セッション変数が失われます。

子コンテンツに P3P コンパクト ポリシー ヘッダーを追加し、ユーザーのデータに対して悪意のあるアクションが実行されないことを宣言できます。Internet Explorer が適切なポリシーを検出した場合、Internet Explorer は Cookie の設定を許可します。

この基準を満たす単純なコンパクト ポリシーは次のとおりです。

P3P: CP="CAO PSA OUR"

このコード サンプルは、あなたのサイトがあなた自身の連絡先情報 (CAO) へのアクセスを提供していること、分析されたデータは「疑似分析」のみであることを示しています。つまり、データはあなたの物理的な ID (PSA) ではなく、あなたのオンライン ペルソナに関連付けられていることを意味します。 )、およびあなたのデータが外部の機関に提供されず、それらの機関が使用することはありません(私たち)。

ASP ページで Response.AddHeader メソッドを使用する場合、このヘッダーを設定できます。ASP.NET では、Response.AppendHeader メソッドを使用できます。IIS 管理スナップイン (inetmgr) を使用して、静的ファイルに追加できます。

次の手順に従って、このヘッダーを静的ファイルに追加します。

  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして、「inetmgr」と入力します。
  2. 左側のナビゲーション ページで、ヘッダーを追加する Web サイト内の適切なファイルまたはディレクトリをクリックし、ファイルを右クリックして、[プロパティ] をクリックします。
  3. [HTTP ヘッダー] タブをクリックします。
  4. [カスタム HTTP ヘッダー] グループ ボックスで、[追加] をクリックします。
  5. ヘッダー名に P3P と入力し、コンパクト ポリシー文字列に CP=... と入力します。「...」はコンパクト ポリシーの適切なコードです。
于 2008-12-23T14:35:10.753 に答える
1

開発のこの時点でそれが良い提案かどうかはわかりませんが、「正しい」方法でシングル サインオンを実行したい場合は、間違いなくシングル サインオンを確認する必要があります。

于 2008-12-23T02:04:01.443 に答える
1

それは私だけですか、それとも Firefox で動作する画像を使用したテクニックで CSRFing を行っているように聞こえますか?

興味深いアプローチですが、セキュリティの脅威にさらされていないことを願っています。

于 2008-12-23T14:27:49.443 に答える
0

私はこれを自分でやったことはありませんが、あなたは正しい道を進んでいると思います。画像の代わりに Javascript ファイルを使用することを除けば、おそらく同じことをするでしょう。これはサーバー側で生成され、クライアント側で Cookie を更新します。

于 2008-12-23T14:20:58.537 に答える
-1

少しばかげているかもしれませんが、ログイン時にドメイン名ごとに Cookie を設定していただけないでしょうか。サイト A にログインするときに 1 つの Cookie を持っているのではなく、5 つ、またはいくつのサイトを持っているのでしょうか?

setcookie(A, $sessid, expire, path, domainA.com);
setcookie(B, $sessid, expire, path, domainB.com);
setcookie(C, $sessid, expire, path, domainC.com);
setcookie(D, $sessid, expire, path, domainD.com);
于 2008-12-23T14:34:18.417 に答える