web-dev-qa-db-ja.com

長寿命セッションのリスク

ほとんどの「大きな」ウェブサイトには、膨大なセッションがあるようです。 Cookieを確認すると、Stack Exchangeには1週間のローリングセッションがあり、GitHubには45日間、Gmailには終わらないセッションがあるようです。

セッションが数時間よりも長い場合のセキュリティ上の影響は何ですか?どうやら セッションの有効期限の推奨時間はわずか15分です ですが、ユーザーエクスペリエンスにとって明らかに悪いことです。小さなWebアプリケーションが使用できる、セッションの有効期限切れのための素敵で幸せなメディアはありますか?主要なWebサイトは、このような長いセッションをどのようにして回避するのですか?

10
101arrowz

私の意見では、多くのサービスは、セキュリティ、使いやすさ、そしてビジネスモデルのバランスを見つける必要があります。ますます多くの企業がユーザーに関する可能な限り多くのデータを収集することを望んでおり、そのため彼らはあなたが常にログインしたままであることを望んでいます。これらのサービスは、多くの場合beg/nagログインまたは登録します(ログアウト中にページをスクロールする場合)。ソーシャルメディア機能も共有に迅速かつほぼ強制的に依存しています。これは、ソーシャルメディアWebサイトに既にログインしている場合にのみ快適に実行できます。基本的に常に。セキュリティリスクはどうですか?これらの企業が実装している他のすべてのセキュリティ制御のおかげで、それらはおそらく無視できると考えられており、おそらくビジネスモデルを損なわずにもう少しセキュリティを強化する価値はないと判断しました。

リスクを見てみましょう。なぜリスクを除外することにしたのでしょうか。

  • 兄があなたのコンピュータを使う、そしてあなたはログアウトするのを忘れた。他の誰かがあなたのコンピュータへの無制限のアクセスを持っている場合、あなたはすでに対処すべきより大きな問題を抱えています。数日ではなく数時間後にセッションを期限切れにしても、セキュリティに大きな影響はありません。
  • インターネットカフェからログインしました、ログアウトするのを忘れました。繰り返しになりますが、誰か他の人のマシンを使用するときは、細心の注意を払わないと、さらに大きな問題が発生します。いずれの場合でも、Webサイトで「他のすべてのデバイスからログアウト」することが許可されている場合は、何かが間違っていることに気付いたらすぐに攻撃者のセッションを停止できます。また、2FAが役立つか、回復オプション(メールまたは電話)を設定するだけです。ほとんどのソーシャルメディアWebサイトにはこれらのオプションがあり、一部のbeg/nagでもそれらを使用できます。
  • 誰かがあなたのクッキーを盗みます。どうやって、何のために?セキュリティに真剣に取り組んでいるWebサイトは、httpのみのCookie、HTTPS、HSTSを使用し、IP、場所、デバイス、動作についてセキュリティチェックを実行し、2FAやさまざまな回復オプションなどを提供しています。
  • CSRFおよびXSS。一部の脆弱性により、Cookieを盗んだり、既存のセッションに乗ったりすることができます。ログアウトしている場合、この種の攻撃は機能しない可能性があります。しかし、深刻なWebサイトはおそらくCORS、コンテンツセキュリティポリシーをすでに実装しており、ブラウザーによるiframeへのロード、バグ報奨金の提供、内部セキュリティチームの設置、人工知能の開発や使用によるビジネスの監視などを許可していません。Cookieを削減しますこのシナリオでは、有効期限が数時間または数分に影響しますか?

要約すると、これらの「大規模」企業にとって、セッション時間を短縮しても、セキュリティに顕著な影響を与えることはありません。セッションの期限切れが早すぎると、実際にビジネスに悪影響を与えます。なぜなら、ユーザーは常に接続していることを期待しており、期待されているからです。すべてのWebサイトを使用し終えた後もログアウトします。これは常に良い習慣であるためです。すべてのWebサイトが最良のセキュリティプラクティスに従うことや、Google/Facebookなどのセキュリティに十分なリソースを投資することが期待できるわけではありません。

2
reed

確かに質問はかなり興味深いものです。どちらの方法でも、各システムのリスク評価プラス制御に要約されます。大まかに言えば、長寿命セッションの2つの望ましくない結果を想像できます。

  1. 誰かがあなたの記録されたアカウントでブラウザを開くことができます。 コントロール

    • 個人のデバイスが盗まれた疑いがある場合は、アカウント設定を介して別のデバイスからのすべてのセッションを閉じます。
    • 個人のデバイスをロックします。セッションの長さが15分間であることを除いて、7週間のセッションと無限のセッションの間に大きな違いはありません。ロックしない限り、誰かがコンピューターを使用できます。通常、セッションはデバイスを使用するまで無限に更新されます。コンピュータが盗まれた場合は、デバイスをロックし、別のデバイスからのすべてのセッションを閉じる必要があります。
  2. 誰かがセッションIDを盗んで別のデバイスで開くことができます。 コントロール

    • プッシュ通知、SMS、電子メールを介してそれに関するユーザー通知。

上記のシステムの代わりの制御について、それぞれのケースを見てみましょう。

  1. Stack Exchangeには1週間のローリングセッションがあります。 Controls:Googleまたはカスタムメールでログインでき、セッションを削除できます。ログアウトできます。
  2. GitHubには45日あります。 Controls:2要素認証(2FA)、セッ​​ション制御、バックアップメール、SSHキー、ログアウト。
  3. Gmailが終了しないセッションを持っています。 Controls:不審なログインの検出、アラート、2FA、バックアップメール、すべて... enter image description here

7日間と45日間のセッションポリシーの違いは少し微妙であることに注意してください。セッションがまだアクティブである間、デバイスをロックするのを忘れた場合、誰かがブラウザを開くことができます。したがって、ロックされていないデバイスについては何もする必要はないように見えますが、GMailは疑わしいアクティビティについてかなり大きなコントロールを持っています。とにかく、セキュリティエンジニアは、内部のセキュリティリスク評価から有効期限を選択します。有効期限は、場合によって異なり、私たちの認識とは異なる場合があります。主観の一部が常に存在します。

4

TL; DR Cookieには有効期間を明示的に設定するか、ブラウジングセッションの終了時に期限切れにすることができます。 Expires属性は、ユーザーがその間ずっと「ログイン」していると見なされることを必ずしも意味しません。

クッキーを見るから

クッキーとその周りに実装されているアプリケーションロジックの間には誤解があると思います。 Cookieだけを見ると、一部のサイトでは、ユーザーが認証される前にCookieを使用して、匿名ユーザーを追跡します。 Cookieの使用は、幅広い追跡目的に使用できます認証済みユーザーの追跡を含む

セッションcookieは、ユーザーのブラウザセッションで期限切れになる特定のcookieです。つまり、ユーザーがブラウザを閉じると、セッションCookieが期限切れになります。

サーバー(アプリケーション)がCookieの所有者に(再)認証を要求することを決定するのを妨げるものは何もありません。

2
iraleigh