0

ASP.Net MVC3 と IIS 7.0 を使用しています。私のサイトでは、https 経由でフォーム認証を実装しました (requireSSL="true")。.ASPXAUTH Cookie の有効期限 (例: 5 日) を設定しました。すべて正常に動作しますが、あるブラウザーからのログインに成功した後、Cookie .ASPXAUTH を別のブラウザーまたは別のコンピューターに (問題なく) コピーし、ログインとパスワードなしで自分のサイトにアクセスできます。

ログイン パスワードを入力したブラウザまたはコンピュータからのみサイトにアクセスでき、.ASPXAUTH Cookie をコピーした別のブラウザからはアクセスできないようにするにはどうすればよいですか?

前もって感謝します、オレキシ

4

2 に答える 2

4

フォーム認証ではそれができません。フォーム認証に関する全体的な概念は、認証されたユーザーを追跡するためにクライアントの Cookie に依存するということです。主要な Web サイトはすべてこのように動作するため、これは問題ではありません。有効な Cookie があれば、クライアント ブラウザは関係ありません。ブラウザを使用する必要さえありません。サイトに HTTP リクエストを送信し、このリクエストに沿って Cookie を送信するコンソール アプリケーションを作成することができ、ユーザーは引き続き認証されます。

あなたが心配する必要があるリスクはありません。SSL を有効にすることで必要なことはすでに完了しています。つまり、この Cookie は暗号化されていないチャネルを介して送信されることはありません。

于 2012-10-03T12:43:28.567 に答える
0

ユーザー エージェントのハッシュとクライアントの IP アドレスを認証 Cookie に組み込むことができます (その方法については、ASP.Net Store User Data in Auth Cookieを参照してください)。

しかし

モバイル ブラウザとプロキシに注意してください。ローミング ネットワーク上のユーザーは IP アドレスを頻繁に変更する可能性があり、プロキシは複数のユーザーに対して 1 つの IP を提示します。私のように、ユーザーが自宅の Wi-Fi からモバイル ネットワークに移行し、次にプロキシを使用して企業の Wi-Fi に移行すると、非常に頻繁にサインアウトするユーザーが発生します。 . ユーザー エージェント ハッシュを組み込むことは、OS またはブラウザーの更新プログラムをインストールするクライアントもそれらをサインアウトできることを意味します。

代わりに 2 つの Cookie を使用しないでください。1 つは永続的でユーザーを識別し、もう 1 つはセッションのみで、ユーザーがこの訪問でサインインしたかどうかを追跡しますか? 次に、Amazon と同じように、お金に関係するものや個人データの変更/表示にサインインを要求します。ユーザーがサインインすると、認証 Cookie も更新できます。

そうは言っても - 現実的に言えば、認証 Cookie のコピーは、特にタイムアウトを数日のみに設定している場合は、実際には非常に低いリスクです。ワーム/ハッカー/泥棒が認証 Cookie にアクセスできる状況に誰かが陥った場合、彼らはすでにはるかに大きな問題を抱えています。

于 2012-10-03T12:46:49.397 に答える