web-dev-qa-db-ja.com

Cookieの有効期限に関連付けられたログアウト

アプリケーションからユーザーを自動的にログアウトするイベントを探しています。通常、非アクティブなセッションが期限切れになったときにそれを行います。 Cookieを使用して安全に実行できるかどうか疑問に思っていました。ここに私の質問があります

  • ログアウトアルゴリズムにCookieの有効期限を関連付けることは安全ですか?
  • Cookieの有効期限はクライアントが操作できますか?
  • 操作が可能な場合、それは "secure" cookie (Secure/HttpOnlyフラグセット)に当てはまりますか?
3
Yazad

アプリケーション内のセッション状態は、理想的にはセキュリティの観点からサーバー側で管理する必要があります。

したがって、有効期限に関しては、アクティブなセッションのリストを保存し、合意された非アクティブ期間が経過した後、セッションをサーバーから削除する必要があります(正確には、アプリケーションの感度、ユーザーベースなどによって異なります)。

アプリケーションは、ユーザーセッションのサーバー側を終了する明示的なログアウト機能も提供する必要があります。

クライアント側の手段(Cookieの有効期限など)に依存している場合、攻撃者がCookieにアクセスし、有効期限が切れた後にCookieを再生するリスクが常にあります。アプリケーションがそのCookieがまだ有効であるかどうかを判断できない場合は、不正なアクセスにさらされる可能性があります。

この場合、Cookieフラグ(secure、httpOnlyなど)を使用すると、攻撃者がユーザーのセッショントークンを危険にさらすリスクを軽減できますが、サーバーがCookieがまだ有効であるかどうかを判断できないという中心的な問題は削除しないでください。ない。

改ざんから保護されたCookieを使用してサーバーの状態を保持せずにセッションの有効期限を処理し、有効期限内に有効期限の日付と時刻を格納することができます(ASP.NETのデフォルトのセッション管理など)が、これにより、ユーザーがCookieに保存されている時間より前にセッションを明示的に終了できるようにします。

6
Rory McCune