3

次のドメインを持つ.netWebアプリケーションがあります:www.domain.com sub.domain.com files.domain.com

ユーザーがdomain.comまたはsub.domain.comにログオンするときに、セッション状態を共有するようにします(つまり、両方のドメインに同時にログインします)。これは、セッションcoookieのドメインを「.domain.com」に設定することで可能になります。ただし、私の問題は、セキュリティの問題のためにドメイン「files.domain.com」がセッション状態になってはならないことです(そのドメインでホストされているユーザー作成ファイルからのxss攻撃が問題です)。

ASP.NETで、これら2つのドメインに同じasp.netセッションIDを使用することはできますが、3番目のドメインには使用できませんか?

前もって感謝します!

4

5 に答える 5

3

頭に浮かぶいくつかのオプションは次のとおりです。

#1-クライアント側のスクリプトを介して両方のアプリケーションにログイン要求を投稿します。これにより、両方の有効なドメインに同時にCookieを設定できるようになります。これにより、ユーザーを認証する特定のドメインのCookieを作成することで、懸念されるXSSの問題を回避できます。

#2-「安全でない」サイトを別のドメインに移動します。例:www.domain-files.com。このオプションを使用すると、共有Cookieを使用して認証を管理できます。

于 2011-01-27T23:03:14.700 に答える
2

セッションCookieとフォーム認証Cookieを混同しないでください。ASP.NETセッションはアプリケーション間で共有できません。フォーム認証Cookieに関する限り、これは単なるCookieであり、Cookieの機能はdomainプロパティを設定することです。

これを実現するために私が考えることができる1つの方法は、2つのアプリケーション用に特別なmachineKeysを定義することです。web.configこのようにして、認証されたユーザーにwww.domain.comはCookieが送信されます。このCookieは、のマシンキーで暗号化され、同じキーwww.domain.comしかないためsub.domain.com 、Cookieを復号化できます。Cookieは引き続き送信されますが、Cookiefiles.domain.comを復号化することはできず、ユーザーはそこで認証されません。

于 2011-01-19T10:05:32.613 に答える
1

私の考えでは、なぜ人々はXSS攻撃を含む可能性のあるファイルをアップロードできるのでしょうか。彼らがこれを行うことができれば、彼らは他の問題を引き起こす方法を見つけるかもしれません。

最も可能性の高い候補は、ログインページにあり、他のサーバーにクレデンシャルを送信するjavascript関数を持っています。そのため、someoeが1つのドメインにログインすると、javascript関数が同時に他のドメインにログインします。

files.domain.comを別のドメインに移動し、問題を完全に回避すると言うjoe.liedtkeに同意します。

于 2011-01-28T01:45:07.183 に答える
0

これを試してください: さまざまなサブドメインのさまざまなアプリでasp.net認証を共有する

後述するように、マシンキーが一致するアプリケーションのみが相互に認証できます。したがって、files.domain.comに別のマシンキーが与えられていると仮定すると、セッションCookieを復号化できなくなり、他のドメインに対する権限がなくなります。

于 2011-01-21T12:05:09.637 に答える
0

Response.Cookiesたぶん、を使用して直接CookieにGuid値を格納し、その値に基づいてデータベースにクエリを実行して共有認証情報を取得するというタスクを実行します。

于 2011-01-25T04:41:18.860 に答える