web-dev-qa-db-ja.com

同時ログインを許可する必要がありますか?

ユーザーが1時間以内にリクエストを行わなかった場合にログアウトするWebアプリ(Django)があります。

セキュリティの観点から、同時ログインもブロックすることは良い習慣ですか?つまり、ユーザーが自分のPCにログインしてからモバイルデバイスからログインした場合、PCのセッションからログアウトする必要がありますか?

26
Kritz

ここには「1つの答えですべてに当てはまる」というものはありません。単にソーシャルメディアアプリの場合は、同時セッションを許可するだけで十分ですが、アカウントが侵害された場合に1つまたはすべてのセッションを終了する方法も提供します。多くの種類のゲームでは、同時アクセスは不正行為を意味するため、おそらく許可されないか、少なくともアカウントが不正行為を行えないように設計されています(たとえば、潜在的なセッションが複数ある可能性がありますが、1つだけactive =セッション)。 HIPAAまたはGDPR関連の情報などの機密情報を含むシステムでは、2FAがおそらく必要であり、セッション時間が短く、同時ログインはおそらく許可されません。

ここで重要なのは常識です。 「同時アクセスが許可された場合に起こり得る最悪の事態は何ですか?」と自問する必要があります。そして、「ユーザーはそのような機能を持つことから何を得るでしょうか?」短所が長所を上回る場合は、それを行わないでください。リスクが高すぎる場合は、行わないでください。ユーザーにとって便利な場合は、同時ログインを許可することを検討します。一度にアクティブなセッションを1つだけ持つなど、いくつかの注意点があるか、またはセッション管理でセッションを無効にできるようにすることを検討してください。 。

59
phyrfox

同時ログインは絶対に許可する必要があります。理由を説明する2つの具体例を次に示します。

  1. コンピュータでiCloud/iMessage/Gmail/Googleドライブを使用すると、AppleまたはGoogleアカウントが携帯電話からログアウトされ、その逆の場合も同様です。
  2. ラップトップでDropboxを同期するとデスクトップからログアウトする場合を想像してください

補足:画面ロッカーが存在するため、1時間のタイムアウトも取り除く必要があります。もう一度、Gmailにこれがあったかどうかを想像してみてください。

同時ログインを許可するか禁止するかは、アプリケーションの脅威モデルによって決まります。通常、私は、リスクの高いアプリケーション(オンラインバンキングやその他のトランザクションなど)では、同時ログインを許可しないことが正当化される可能性が高いと言います。

セキュリティ上の利点に関して、主なものは、同時ログインを許可しないことで、セッションハイジャック攻撃が長期間持続するリスクを軽減できることです。

たとえば、攻撃者がセッショントークンを盗むことができる場合、同時ログインを許可しないと、ユーザーが再度ログインしたときにトークンが無効になります。

もう1つの利点は、ユーザーが共有PCにログインしたままにしておくと、次回ログインしたときにそのセッションが無効になるため、そのPCの別のユーザーがセッションにアクセスするリスクが軽減されます。

トレードオフは、特にそれが高摩擦プロセスである場合、ユーザーが多くの再認証を求められることを好まないことです。

6
Rory McCune

同時セッションがあらゆる種類の脅威になることはまずありません。ただし、それらを停止することは不便であり、セキュリティの観点からは実際には有害な場合があります。

例:攻撃者がアカウントへのアクセス権を取得したと想定すると、最も簡単な解決策は、そのアカウントのパスワードを変更することです。しかし、セッションがすでにどこかでアクティブだったために、ユーザーがログインしてパスワードを変更できなかった場合はどうなるでしょうか。ユーザーは完全にロックアウトされ、ハッカーは無制限にアクセスできます。

代わりに前のセッションがログアウトされるシステムの方が少し良いかもしれませんが、それほど多くはありません。攻撃者は常にボットに頻繁にログインさせ、アカウント所有者にサービス拒否を引き起こすことができます。これにより、ユーザーは自分のアカウントが乗っ取られたのではなく、システムにバグがあるとユーザーに思わせるため、パスワードをリセットしたり、他の対策を講じたりする可能性が低くなります。

代わりに、ログインしているユーザーがセッションを表示できるシステムは、疑わしいセッションが報告されて閉じられ、ユーザーが自分の資格情報を変更することを知っているため、はるかに効果的です。

もちろん、一度に1セッションのシステムは便利ですが、ほとんどがゲームなどでの不正行為を防ぐのに役立ちます。期限切れセッション、セッションでのIP検証、およびユーザーがアクティブセッションを表示できるようにすることと組み合わせると、同時セッションは完全に安全になります。

3
TR_SLimey

ユーザーのセキュリティは、次の2つのシステムによって管理されています。

  • ログイン資格情報:ここで、誰かがユーザーのパスワードを盗んだ場合、同時ログインを許可しない(新しいデバイスは受け入れられない)と役立ちます。ただし、2faを使用することをお勧めします。ユーザーが意図的にパスワードを共有する場合、同時ログインのみを許可してもセキュリティ上のメリットはほとんどありません(ユーザーがログアウトして他のユーザーにログインさせることができるため)。

  • セッション管理:ここでの最大のリスクは、セッショントークンが盗まれる可能性があることです。この場合、複数のデバイスが同じセッションを使用するため、バックエンドでは、これは1つの同時ログインにすぎません。

0
Rishabh Poddar