5

セッションストアとしてredisを使用していますが、

このようにセッションを保存する

[NameSpace]:[UniqueId] -> [email_id]

ここに問題があります。

ユーザーがパスワードをリセットしたときに、そのユーザーのすべてのセッションを無効にするにはどうすればよいですか?

ここに私が思いついた解決策があります、

EメールIDをUIDの一部として保存

セッションを保存する

[NameSpace]:[UniqueId]-[email_id] -> [email_id]

次にSCAN MATCH、ユーザーがパスワードをリセットしたときにすべてのキーを削除するために使用できます。

UID のリストを維持する

のようなセッションを保存した後

[NameSpace]:[UniqueId] -> [email_id]

別のリストを維持する

[NameSpace2]:[email_id] -> [ "[UniqueId]", "[UniqueId]" ]

リストを使用してセッションを無効にします。(redis名前空間 pubsub を使用して、上記のリストの有効性を維持できます)

私の質問は

  1. redis で一括セッション無効化を行うための推奨される方法は何ですか?
  2. [UniqueId]-[email_id]Cookie のようにセッション ID を保存する際にセキュリティ上の問題はありますか?

PS: 同様の質問があることは承知していますが、redis とユーザー セッションの一般的なものではなく、ノイズが多く、express.js を対象としていると感じました。( express.js で 1 人のユーザーのセッションをすべて無効にする)

4

3 に答える 3

1

再。1 - アクティブなユーザー セッションの数は、データベース内のセッションの総数よりもはるかに少ない (おそらく) ため、ユーザーごとにアクティブなセッションを手動で管理するのではなく、手動で管理しますSCAN。ただし、アクティブなセッションを効果的に追加および削除できるようにするため、リストではなく、ユーザーごとのセットを使用してアクティブなセッション キー識別子を格納します。一括無効化が必要なアクティブなセッションがユーザーに多数SSCANある場合は、 の代わりに を使用できますSMEMBERS

再。2 - 誰かが app/db サーバーに侵入した場合、多くのセキュリティ上の問題があります :)

于 2015-02-06T15:23:40.483 に答える