2

ASP.Net MVC3 サイトで Cookie を使用しない認証とセッションを有効にしました。私たちが遭遇した問題は、ユーザーをログアウトしても、Cookie のない文字列に保存されている既に作成された Cookie/セッションが無効にならないことです。シナリオは次のとおりです。

ユーザーはサイトにログインし、Cookie を使用しない認証を使用して登録およびログインします。ユーザーの URL に Cookie のないチケットが含まれるようになりました。ユーザーは、デスクトップ ショートカットを作成するか、コピー アンド ペーストして URL をコピーします。

ユーザーがサイトからログアウトすると、 FormAuthentication.SignOut() が呼び出されてチケットが無効になり、ログオン ページにリダイレクトされます。

ユーザーはその URL を任意のブラウザーにコピー アンド ペーストしたり、別のコンピューターに移動したりするだけで、既にログアウトしていても、サイトはその認証チケットを受け入れます。深刻なセキュリティ リスクを引き起こします。

クッキーレスかどうかにかかわらず、以前のすべてのクッキーを無効にする方法はありますか? 現在、私たちのプロセスは Cookie ベースのセッション/ログインで機能します。cookieless のソリューションが必要なだけです。

これまでに見つかった唯一の解決策は、データベース内のすべての Cookie を追跡し、データベース内の Cookie を無効にし、データベースをチェックして現在の Cookie がまだ有効であることを確認することです。これはパフォーマンスに大きな影響を与えるため、先に進む前に、これが唯一の最適なソリューションであることを確認したいと考えています。

ありがとう

4

2 に答える 2

2

基本的に URL /F-long text/ に FormAuthentication チケットが保存されます。このチケットは独自の有効期限内にあり (少なくとも永続的でない場合)、その期間が過ぎると URL は無効になります。したがって、単純にタイムスパンを短縮することをお勧めします。明示的なログアウトが「必須」の場合、webfarm にいて、なんらかのスケールアウト ソリューションがない場合にのみ、db を使用する必要があります。ボックスが 1 つしかない場合は、HttpCache を使用してダーティ ジョブを実行できます。また、Cookie全体ではなく、UserIDのみを使用します(つまり、ログイン時に、ユーザーがアクティブなユーザーID内にあるかどうかをチェックするPostAuthorizeのGlobal.asaxで、アクティブなユーザーIDの範囲に一定のタイムスパンでUserIDを追加し、彼がいる場合はタイムスパンを延長し、彼をスローしますそれ以外の場合は、ログアウト時に彼を削除します)。

于 2013-06-19T14:19:12.750 に答える
0

SignOut の後に Session.Abandon() を使用してセッションを破棄します

于 2013-06-19T14:07:21.517 に答える