oauth2 アクセス トークンとリフレッシュ トークンを生成し、データベースに保存します。UUID v4 を使用してこれらのトークンを生成し、ダッシュを削除します。以前は有効期限が切れたトークンを削除していましたが、何かが起こる可能性があると考えたので、今はすべて保存しています。
攻撃者が自分用に生成されたすべてのアクセス トークンをローカルに保存し、これらのアクセス トークンを認証のために何度も使用し続けたらどうなるでしょうか。私は DB 管理者として、生成されたトークンを削除していたため、DB はトークンが一意であることを知る方法がありません。したがって、UUIDv4 アルゴリズムが別のユーザーのアクセス トークンを生成し、それが衝突 (以前に生成されたものと同じ UUID) であり、攻撃者がその衝突を発見した場合、攻撃者は以前に生成されたトークンを持っているため、サービスに入ることができます。
私の質問は、これについて心配し、競合が発生した場合にすべてのトークンを保持して一意性を確認するか、または有効期限が切れた後にアクセス トークンとリフレッシュ トークンを削除し、UUIDv4 がこれを防ぐのに十分なエントロピーを持っていることを信頼する必要があるかということです。
また、すべてのトークンを保持すると、アクセス トークンが 1 時間ごとに期限切れになり、ユーザーが次にアクションを実行したときに再生成されるため、データベースが膨張するのではないかと心配しています。
どんな助けでも大歓迎です!