1

Gmail、Hotmail、Facebook などが次のシナリオをどのように処理するかを誰かが正確に知っているかどうか疑問に思っています。(注: Cookie がタブ間で共有されていると仮定します)

  1. アプリケーションへの 2 つのログイン ページを開きます。
  2. ユーザー 1 がドメインにログインします。
  3. ユーザー 1 は、一部のデータを保存せずに変更します。
  4. ユーザー 2 は別のタブでドメインにログインします。
  5. ユーザー 1 は自分のタブに戻り、データを保存します。

Gmail の手順 FF を繰り返してみましたが、「別のユーザーが同じブラウザーからサインインしたために自動的に発生した可能性があります」というメッセージが表示され、前のユーザーが自動的にログアウトされたというメッセージが表示されることがありますが、それ以外の場合は「ページがリダイレクトされていません」と表示されますCookie をクリアする必要があります。

Hotmail の方が少し優れているようで、最初のページにログインしたことをすぐに検出し、アカウントを切り替えたいかどうか尋ねてきます。アカウントを切り替えることを選択し、データを保存しようとして戻った場合、hotmail はログイン エラー メッセージをスローします。

それぞれがどのように実装されているか、およびこの問題を処理するためのベストプラクティスは何かについて、誰でも光を当てることができますか?

4

1 に答える 1

1

一般に、このような問題に対処するには、Cookie やその他の送信されたデータから ID を相互参照する必要があります。したがって、送信されたフォームにはユーザー ID が含まれ、Cookie にはユーザー セッションが含まれます。それらが矛盾している場合は、試行を拒否し、セッションを無効にして、ユーザーをログインに送信します。

フォームに CSRF 保護トークンがある場合 (そうあるべきです)、CSRF トークンはユーザー ID もエンコードできるため、ユーザー 1 がデータを保存しようとすると、フォームの CSRF トークンが無効なため失敗します。

于 2010-07-12T23:01:44.777 に答える