2009-06-02 5 views
11

これは通常、クロスサイトスクリプティング攻撃に関連していることを認識していますが、私は、セッションが単一のドメインに属する複数のサブドメイン(例:一度だけログインし、同じセッションでsubdomain1.domain.comとsubdomain2.domain.comの両方にアクセスできます)。私は最初にそれがどのように機能するのか理解する必要があると思いますが、これまでのところ、関連性の高いものはほとんど見つけられていません。クロスドメインのクッキーアクセス(またはセッション)

もう一度、私は正しい質問をしていないかもしれません。

ありがとうございます。

答えて

0

特定のドメインにCookieを設定できます。

PHPでは、setCookie()メソッドには、トップレベルドメインを指定できるパラメータが含まれているため、すべてのサブドメインでCookieが有効です。あなたのタグに基づいて、私はあなたがasp.netで働いているのを見ます。おそらく、これはまた、ASPのために存在する... ASPのために少し検索した後

はこの試してみてください。

Response.Cookies("CookieName").Domain = ".mydomain.com" 

をかthis

+0

タグメイトを見てください。 – Shoban

+1

euhm、そうしました...そうでなければ、私は 'あなたのタグに基づいて'と書いたことはありません... – Fortega

+0

しかし、あなたはもう一度編集しました(?)私は初めて2番目のコードを参照しました;-) – Shoban

18

インプロセスセッションをすることができますが、有効なままにすることはできません読んで複数のサブドメインにわたるCookieを許可するようにWebアプリケーションをコーディングします。あなたがに等しいドメインを設定する必要があります。デフォルトでは

Response.Cookies("CookieName").Domain = ".mydomain.com" 

Remember the period.

+0

別のドメインでクッキーを設定することはできません。あなた自身のドメインの下になければなりません。 – aleemb

+5

@aleembもちろん、私はサブドメインを言った。 –

+17

タイトルはそれを言いますが、彼が求めていることを読むと、彼ははっきりとサブドメインを言う。 –

2

を、サイトのすべてのCookieをクライアントにまとめて格納され、そしてすべてのクッキーはそれにすべての要求をサーバーに送信されますサイト。つまり、サイト内のすべてのページで、そのサイトのすべてのCookieが取得されます。ただし、Cookieの範囲は2通りの方法で設定できます:

  1. Cookieの範囲をサーバー上のフォルダに制限します。これにより、Cookieをサイトのアプリケーションに制限できます。
  2. スコープをドメインに設定すると、ドメイン内のどのサブドメインがCookieにアクセスできるかを指定できます。

詳しくはhereをご覧ください。

1

サブドメインがそのCookieを受信できるようにドメインに設定されているCookieに関するコメントは、あなたにその側を与えてくれますが、欠落しているのはセッションの一貫性です。

これは、ファーム内のサーバー間で状態を維持する問題に非常によく似ていると思われます。解決策は、セッションストアが両方のサイト間で一貫していることを確認することです(同じ「Webサイト」のサーバーではない場合) IISで)。セッションストアをSQL Server(HOW TO: Configure SQL Server to Store ASP.NET Session State)に移動することができます。このサーバーは、提示されたCookieに関連するセッションデータを検索するときに、各サイトが同じストアを照会するための目的に役立ちます。

私はあなたが正しい軌道に乗ることを願っています。

6

ドメイン間でセッションデータやCookieデータを共有する方法はたくさんあります。最も簡単な方法は、共有データストアを介してサーバー側で共有することです。しかし、あなたがこの問題を簡単に聞くことはできません。

これを行うもう1つの方法は、同様に簡単です。ドメインone.comには、name=aleemid=123というセッションデータが含まれており、これをtwo.comに渡したいとします。次の手順を実行します:

  1. two.comは、クエリパラメータを介してデータを取得するとtwo.com/api/?name=aleem&id=123
  2. への呼び出しを行い、それがデータとクッキーを作成します。このCookieはtwo.comドメインに保存されます。
  3. two.comは当時この場合one.com

これは簡略化シナリオであることを起こるREFERERにリダイレクトします。ドメインtwo.comは、それだけでなく、one.comを信頼できる必要がありますが、リクエストを本物であり、ユーザーが作成したものではないことを知る必要があるため、これを軽減するために公開鍵/秘密鍵を使用する必要があります。

1

あなたは、共通のサブドメインを設定する能力を持っている場合は、あなたがこれを行うことができます:あなたのサブドメインのhtmlファイルで

、このような上部のJavaScriptのファイルが含ま:チェックで

<script src="http: //common.domain.com/check.asp"></script> 

を.asp、あなたのLOGGED_INクッキーを探し、存在しない、ページを表示した場合、人は、ユーザ名・パスワードを提出すると、提出

<% 
if (cookie_not_found){ 
%> 
location.href = "http: //common.domain.com/login.asp"; 
<% 
} 
%> 

ようなものを使用して、http://common.domain.com/login.asp言います同じlogin.aspに戻り、セッションCookieを設定します(common.domain.comドメインで設定されます)。http://subdomain1.domain.comにリダイレクトされます。

今のところ、組み込みの「common.domain.com/check.asp」が呼び出され、common.domain.comのCookieがリクエストとともにブラウザから送信されます。したがって、あなたがsubdomain1.domain.comにいるときでも、セッションが有効かどうかを知ることができます。ここで

関連する問題