特定のセキュリティ要件を持つ Django でアプリケーションを開発しています。そのうちの 1 つは、既定の動作を無効にして、アクティビティのセッションの有効期限を自動的に延長することです。はい、明示的に更新しない限り、セッションを期限切れにしたいです (例: 再ログイン、トークンの更新など - 現在は関係ありません)。
これによりセキュリティがどのように向上していますか? 被害者の PC を制御する悪意のあるユーザーは、限られた時間だけ、被害者が認証されたアプリケーションにしかアクセスできません。
残念ながら、 を使用すると、セッションの変更時間が徹底的に使用され、サーバー側ストレージのバックエンド ( ) とHTTP Cookie のミドルウェア コンポーネント ( ) のベースで使用さdjango.contrib.sessions
れるため、これは構成できないようです。また、有効期限は、セッションデータのみがセッション オブジェクトにロードされるため、内部的には変更時間に対する相対形式でのみアクセスできます ( ) 。したがって、モデルに直接尋ねない限り ( -うーん、醜い)、有効期限が何であるかはわかりません。backends/base.py
middleware.py
SessionStore._session_expiry
Session.objects.get(pk=s.session_key).expire_date
これを適切に実装するにはどうすればよいですか?メソッドget_expiry_*
とprocess_response()
ミドルウェア機能を再実装せずにこれは可能ですか? Djangoが更新された場合に後で壊れる可能性があると思うので、それは避けたいと思います。
私自身の条件で有効期限を追跡するためにカスタムセッション変数を設定してそれを試してみてください(この回答のように)、冗長に見えるだけでなくSessionStore.get_expiry_age()
、ミドルウェアが別の有効期限を強制するかどうかを尋ねる他のアプリ/コードを混乱させます。したがって、このアプローチは私の目的には品質が低すぎると考えています。
上記の私の仮定は正しいですか?これを新機能としてリクエストし、その間に自分でパッチを適用する必要がありますか?