web-dev-qa-db-ja.com

ウェブアプリからログアウトする必要がありますか?

Googleをすばやく検索しても、Webアプリケーション(オンラインバンキング、Amazon、Facebookなど)からログアウトすることが重要か、またはタブやブラウザを閉じるだけで安全かどうかはわかりません。一部のテレビ番組で、ログアウトするのが最善だと聞いたはずです...

適切にログアウトしないと、どのような脅威にさらされますか?

97
Angelo.Hannes

これはささいな、単純化した質問ではありません。考慮する必要のあるいくつかの異なる側面があり、いくつかの異なるクライアントによって影響を受けるいくつかの異なるシナリオのいくつかの異なる脅威に適用されるいくつかの異なるメカニズムと対策があります。これらを1つずつ調べてみましょう。 (最後にTL; DRがあります...)

  • 公共のコンピューターを使用している場合:ログアウト
    アカウントを保持しているサービスは、一般にアクセス可能なマシンにログインしたままにしないでください。

  • Trivial unsensitive serviceを使用している場合:STAY LOGGED IN。
    これは、インターネットラジオなどの使い捨ての一時的なアカウントにのみ適用され、アクセスを与えることは迷惑に過ぎません。

  • Public Wifiを使用している場合:ログアウト
    ネットワークは本質的に信頼されていないため、1つの大きな明らかな脅威があります。セッションCookieの盗難。セッションがハイジャックされた可能性があります。誰か-ネットワーク上の他の誰か、またはホットスポット自体-セッションCookieを盗みました。もちろん、これが事実であるかどうかはわかりませんが、実際にはログアウトできない可能性があります(悪意のあるネットワークまたはMITMの場合は、接続全体を制御できます。ログアウト要求)。

    つまり、セッションクッキーISだけのサードパーティによる盗難は有効な脅威(例 FireSheep )であり、明示的にログアウトすると無制限に使用できなくなります。 (基本的には既に損傷が発生している可能性がありますが、これにより継続することができなくなります。)

    信頼できるネットワークにアクセスしてログインし、明示的にログアウトすることをお勧めします。念のためMITMがログアウトをブロックしました。信頼できるサイトでパスワードを変更するのがさらに良いです...しかし、信頼できないネットワークから重要な重要なサイトにアクセスしないことをお勧めします。

  • 終日アプリケーションを使用している場合:STAY LOGGED IN。
    サービスを終日使用していて、すばやく簡単にアクセスしたい場合。 Facebook、電子メールなど-これが信頼できるネットワーク上の自分のプライベート(または仕事用)コンピューターである場合、ブラウザーを長期間ログイン状態にしておくことは賢明なトレードオフです。

    脅威:悪意のある傍観者

    コーヒーを一杯飲んでも、離れるときはいつでもコンピュータをロックしてください。または、他の人が出入りできない物理的なドアがある場合は、オフィスをロックします。 (または、ホームオフィスを設置してください、wheee!)定期的にログアウトして、再度ログインしてください。「あなた」が行った投稿を監視してください。

    脅威:他のサイトでは、ログインしていることを登録できます(たとえば、Facebookの重要な「いいね」アイコンを表示するため)。これは適用されるトレードオフの一部ですが、この回答の範囲外である幅広い影響があります。

  • HTTP基本認証を使用するすべてのアプリケーション(多くのルーターなど)を使用している場合:ログアウトして閉じる[〜#〜] all [〜#〜 ]ブラウザウィンドウ。ここが興味深いところです。これは次のセクションにも当てはまります。

    Basic AuthNを使用してウェブアプリにログインすると、ブラウザはパスワードをキャッシュし、リクエストごとにパスワードを送信します。ブラウザーのBasicAuthメカニズムにはセッションの概念がありません。ログアウトを繰り返しても、webappは(サーバーサイドもクライアントサイドも)セッションを「強制終了」する方法がありません。これらのキャッシュされた資格情報をクリアする唯一の方法は、ブラウザープロセスを強制終了することです。

    [〜#〜]ただし[〜#〜]。ブラウザーの選択は、この「ブラウザープロセス」の概念にとって重要です。例えば。:

    • Firefox:開いているタブやウィンドウの数に関係なく、常に単一のプロセスです。

    • Chrome:各タブは個別のプロセスです。ただし、別の「グローバル」な親プロセスがあります。すべてのタブプロセスは、このプロセスの子プロセス(Windowsの用語では「ジョブプロセス」とも呼ばれます)、であり、すべて親プロセスプロセスメモリを共有します。これは、新しいウィンドウを開いた場合にも当てはまります。したがって、Chromeは親を共有して子プロセスを十分に使用できるため、タブが特に活発で堅牢になりますが、欠点はプロセスの状態を共有することです。つまり、ChromeからキャッシュされたBasicAuth認証情報を削除する唯一の方法は、すべてのChromeウィンドウを閉じることです。タブを閉じるだけでは役に立ちません。

    • [〜#〜] ie [〜#〜]:タブ/プロセスモデルはChromeと同一(または類似)ですが、1つの例外があります。defaultによって、IEは、親プロセスの子のすべてのタブも開きます。 (実際、これは100%正確ではありません-一部のタブは他のタブと子プロセスを共有します-しかし、これは実際には重要ではありません)。ただし、IEコマンドラインに "-NoFrameMerging"を追加すると、完全に新しいIE親プロセスが作成されます。ここでの違いは、あなたができることです。ルーターにログインするためだけに新しい親ウィンドウを作成し、完了したらjustを閉じます。これにより、他の開いているIEウィンドウに触れることなく、BasicAuthキャッシュがクリアされます。 (注意:Chromeでもこれを行うことが実際に可能です。ただし、これはかなり複雑であり、マシンで別のブラウザプロファイルを作成する必要があります。)

  • 機密性の高いアプリケーションを使用している場合。バンキングアプリ-常に明示的にログアウトして閉じる[〜#〜] all [〜#〜]BROWSER WINDOWS。この部分はもう少し複雑ですが、依存関係の多くはすでに上記でカバーされています。

    脅威:悪意のある傍観者上記のようにコンピュータをロックすることは理にかなっていますが、以前からのトレードオフの必要はありません。ログアウトするだけです。

    セッションタイムアウト:さらに、最もデリケートな(バンキングなどの)アプリshouldは、何らかの形式の自動アイドルタイムアウトを実装しているため、午後に出かけると、セッションが自動的に終了します。いくつかのポイント。悪意のある傍観者がコーヒーを補充するために4分の1分間外に出ると、コンピュータに飛び乗るだけなので、これはこの脅威には役立ちません。

    脅威:セッションCookieの盗難

    うまくいけば、デリケートなアプリが積極的にこれを防止しています。 HTTPS、IDS、地理/詐欺検出など。とはいえ、念のために、「機会の窓」を閉じることは理にかなっています-多層防御など。

    セッションタイムアウト:以前と同様に、最も機密性の高い(バンキングなど)アプリshouldは、何らかの形式の自動アイドルタイムアウトを実装し、minimize /を支援しますこの脅威も。ただし、このアプリがアイドルタイムアウトを正しく実装しているという事実を知っていても、攻撃者にとってはまだ機会の窓があります。とはいえ、比較的安全なアプリでは、これはそれほど脅威ではありません。

    脅威: クロスサイトリクエストフォージェリ(CSRF)

    これはあなたが心配する必要があるものです。

    銀行にログインしているとしましょう。同じウィンドウの別のタブで、疑わしいWebサイトを閲覧しています。このWebサイトを表示しているときに、よく知られているさまざまなバンクサイトを不正にテストして、たまたまそれらにログインしているかどうかを確認している可能性があります。もしそうなら、それはCSRF攻撃を開始します(すべての銀行サイトがこれに対して脆弱であるわけではありませんが、多くはまだ脆弱です)。CSRF'd!

    はい。あの人より賢く、バンクサイトが開いている間は疑わしいサイトを閲覧しないでください。したがって、銀行での取引が終了したら、タブを慎重に閉じます。thenのみ、新しいタブを開いて危険なサイトを参照します。さて、問題は、あなたはまだログインしており、しばらくの間です(通常は約30分ですが、10から1時間程度...)。CSRF'd!

    (ここでのセッションタイムアウトは、機会のウィンドウを短くすることで役立ちますが、ウィンドウ内でこれが発生する可能性があることに注意してください)。

    うーん。そうですね、新しいブラウザウィンドウを開きましょう!それを銀行業務に使用してから、もう一度タブを閉じて、やりたいマルウェアサイト用に新しいタブをもう一度開きます。おっと、基本認証に関する上記のセクションを参照してください-ブラウザの選択が重要です。

    「シークレット/プライベートブラウジング」またはIEの「-NoFrameMerging」フラグを使用していない限り、同じプロセスファミリーに属していますまだ開いているセッションは、少なくともサーバーがアイドルタイムアウトになるまで、すべてのウィンドウ間で共有されます。まだ採用されていないと仮定します。CSRF'd!

    わかりました、もう1つだけです。機密性の高いアプリから常にログアウトする必要があることについて、この過度に長い投稿をどこかで読んだので、犯罪者のサイトにアクセスする前にそれを実行します。残念ながら、アプリケーションは適切なログアウトを「忘れた」ため、サーバー上でアプリケーションを無効にする代わりに、アプリケーションからリダイレクト(またはCookieを消去)しただけです...CSRF'd!


それで、TL; DR?

  • このサイトのアカウントを気にする場合は、ログアウトしてください。
  • アカウントに関心があり、基本認証を使用している場合:ログアウトしてすべてのブラウザタブとウィンドウを閉じます。
  • あなたがあなたのアカウントを気にしないなら-それはあなたが何をしても問題ではないので、尋ねるのをやめてください:-)。

追伸Flash Cookie、非HTTPセッション、統合Windows認証などについては取り上げませんでした。いい加減にしろ。

89
AviD

ログインをWebサービスに送信すると、ブラウザにCookieが埋め込まれます。このCookieには、Webサービスを使用している間、場合によっては後で戻ってきたときに、ユーザーを識別する一意のID値があります。もし、どういうわけか*、その識別子が盗まれた場合、それを所持している人は、おそらく、あたかも自分であるかのようにあなたのアカウントを使用できます。

ログアウトは、通常、あなたと敵の両方に対してこの識別子を無効にします。あなたはどちらも識別子を使用してWebサービスに「こんにちは、Angelo Hannes」と伝えることはできません。これには、youにユーザー名とパスワードを再度入力してログインすることを強制するという残念な副作用があります。

「それで、それで私は何をすべきか?」とあなたは尋ねます。まあ、それは異なります。一部の機密Webサービス(銀行、政府のWebサイト、保険会社など)は、セッション時間が短い、つまり、サービスを使用しない状態が10〜15分続くと、識別子を無効にします。他の機密Webサービス(基本的に他のほとんどすべてのアカウントを制御する電子メールの受信トレイ)は、頻繁にセッションを無効化しませんが、IPアドレス制限を適用します(別のIPアドレスから同じセッションを使用する場合、セッションは無効)。

TL; DR

  • 公共のコンピュータ、特別な偏執狂、あなたはあなたのセッションが危険にさらされていると思いますか、それともあなたは本当にこのサービスを気にしていますか? ログアウト

  • プライベートコンピュータ、セッションは安全だと思いますが、このサービスは本当に気にしませんか? ログインしたままでも問題ありません


*セッションは、サービスの既知の問題(HTTPSを使用しないなど)を使用して盗まれたり、サービスで新しく発見されたXSS攻撃、Cookie情報を開示するブラウザーの新しい脆弱性などのゼロデイの脆弱性を使用して盗まれたりする可能性があります使用しているコンピューターにインストールされているマルウェアがセッション情報を盗みます(その場合、ユーザー名とパスワードは既に盗まれているはずです)。

40
Adi

私はこの質問への回答を、上記ですでに投稿したものとは逆の方法で提供するつもりです。

Webアプリケーションのアイドルセッションに関連するリスクは何ですか?

  • XSSによるセッションCookieの盗難(セッションがIPに関連付けられていない場合)
  • Cross Site Request Forgery(アイドル状態ではあるがまだ認証されているセッション)。
  • 中間者攻撃(SSLStripを使用した、または混合HTTPS情報の開示によるスニッフィングセッションCookieの使用)
  • ターミナルを開く(Paypalが<ランダムなサイバー犯罪者の名前をここに挿入>の横に開いたまま昼休みに出かけ、ログアウトしなかったためにアカウントが空であることがわかりました)

タイムアウト前述のように、銀行のWebサイトなどの特定のセキュリティクリティカルなアプリケーションのタイムアウト値は、通常5〜10分と低くなっています。ただし、これらのアプリケーションには通常、セッションに関連付けられたランダムシーケンスCSRF防止トークンとIPもあります。したがって、Cookieが危険にさらされている場合でも、セキュリティが適切に実装されていれば、リモートの攻撃者がCookieを使用して実行できることはありません。

FaceBookなどの他のWebサイトでは、アクセスや使いやすさを向上させるために、通常はセッションがタイムアウトしません。ただし、ログイン通知、CookieへのIPバインディングはサポートしています。 GmailやDropBoxなどのアプリケーションは、2段階のSMS Authをサポートしており、セキュリティをさらに向上させ、新しい信頼できないPCからのセッションの盗難を無効にします。

したがって、私が持っている唯一の心配は、セッションを開いたままにすることです:

  • パブリックターミナル(とにかくプライベートブラウジングを使用する必要があります。FFではCtrl + Shift + P)
  • セキュリティが不十分なWebサイト(ユーザーは、悪意のあるCookieモンスターからのCookieの機密性を保持する責任があります)。
11
Rohan Durve

ログアウトしない最大の脅威の1つは、公共のコンピューターを使用することです。ブラウザの設定によっては、ブラウザを閉じただけではセッションが終了しない場合があります。ユーザーが自分のOSユーザーをログアウトするのを忘れた場合(またはユーザーがログアウトすることさえできない場合)、他の誰かが彼のWebアプリケーションにアクセスできます。もちろん、これは非常にありそうなケースではありません。ただし、多くの場合、大規模なユーザーグループがWebアプリケーションにアクセスでき、一部のユーザーは公共のコンピューター(大学、学校、図書館)を使用する場合があります。

4
user31950

セッションにはタイムアウトがあるため、webappを使用した後、ログインするのはごく短時間です。

それは必ずしも本当ではありません。サイトがセッション管理を実装する方法に応じて、任意の長いタイムアウトを使用でき、ブラウザ/ OSの再起動後も存続するセッションを使用することもできます。

最終的に、明示的にログアウトする必要があるかどうかは、Webアプリが何であるかによって異なります。銀行サイトは一般に非常に短いタイムアウトを実装し、ソーシャルネットワーキングサイトは通常、特にIDプロバイダー(OpenIDなど)でもある場合、基本的に永続的なログインを実装します。

通常、セッションCookieを盗むことは簡単ではありませんが、可能であり、明示的にログアウトすることでそれを防ぐことができます。通常、価値の高いサイトでは明示的にログアウトする必要があります。

4
Lie Ryan

サービスにタイムアウトがあると想定しないでください。タイムアウトがある場合でも、攻撃者は単にCookieを収集し、サービスにpingし続け、Cookieを送信し、「最後に確認された」タイムスタンプを更新する単純なスクリプトでそれを使用する可能性があります。ウェブサイトの所有者がこれから身を守る方法はいくつかありますが、ウェブサイトの所有者を信用しないでください。 Cookieを盗むことは思ったほど難しくはありません(YouTubeで検索すると、どれほど簡単かがわかるかもしれません)。この場合の最善の保護策は、実際にログアウトすることです。

3
jpkrohling

ログアウトしない場合、サーバー(Webアプリケーションが実行されている場所)はブラウザーを閉じたことを認識していないため、ログインCookieは一定の期間(実装に応じて)有効です。誰かがあなたのクッキーを盗んだ場合、彼または彼女はアプリケーションにログインするためにそれを使用し、さらに有効性を拡張することができます。

1
Kees de Wit

私の意見ではセキュリティの観点からは、答えは単純です。サイトのログアウトが完了したとき。また、ブラウジングが終了したら、キャッシュをクリアして履歴を削除します。ブラウザを閉じたときにすべてをクリアするようにブラウザを設定することもできます。あなたがしたことの痕跡をできるだけ少なくしてください。

また、メールのポップアップやおかしなリンクをクリックしないでください。自分がいると思われるサイトから別のサイトへのリダイレクトに注意してください。

0
AquaAlex