8

サーバー上の 2 つの異なるフォルダーに存在する 2 つの ASP.Net アプリケーションがあります。

  • /Foo<-- これは標準の安全でないアプリケーションです
  • /Secure<-- これは IIS による SSL を必要とする別のアプリケーションです

問題は、デフォルトでASP.NET_SessionIdCookie がドメインで指定され、異なるディレクトリにある 2 つのアプリケーション間で共有されることです。/Fooハイジャックされた Cookieを使用してアプリケーションへのアクセスを許可することはできないため、セッション Cookie を異なるものにする必要があり/Secureます。

理想的には、各アプリケーションの Cookie が CookiePathプロパティによって制限されるようにしたいと考えています。箱から出して.Netでこれを行う方法は明らかにありません。

追加の頭痛の種として、Cookie パスを設定するカスタム コードを作成したとしても、一部のブラウザーは大文字と小文字を区別し、 と に同じセッション Cookie を使用しないのではないかと心配しています/Foo/fooこれは、リンクの作成方法によっては、同じアプリケーションで複数のセッションが発生します。

誰かがこの問題に遭遇して克服しましたか?

4

4 に答える 4

12

.Net 2.0以降では、web.configの「sessionState」XML要素の「cookieName」属性をアプリケーションごとに異なる値に設定できます。これにより、同じセッションIDを使用できなくなります。

これに関するMSDNリファレンスは次のとおりです。

于 2008-11-19T15:36:06.560 に答える
1

/SecureIISのフォルダのアイコンを確認してください。

コグアイコンがある場合、それは別のアプリケーションであり、セッションは異なる必要があり、アプリは独自のアプリドメインで実行されます。

地球のアイコンの場合は仮想ディレクトリであり、ルートサイトおよびと同じセッションを共有し/Fooます。

于 2008-11-19T15:26:30.667 に答える
1

フォーム認証を使用している場合は、web.config のフォーム Cookie も変更する必要があります。

<forms name="Foo"...
<forms name="Secure"...
于 2012-08-08T08:04:17.307 に答える
0

それらは別々の仮想ディレクトリにあるように聞こえますが、それでも同じアプリケーションプールにあります。アプリケーションを本当に分離したい場合は、/secureアプリ用に別のアプリケーションプールを作成してみてください。

于 2008-11-19T15:16:26.540 に答える