0

ハッシュを生成してチェックするこの方法により、1日だけ続く安全なユーザー固有のハッシュを作成できますか?

generate_token:sha(salt + day_of_year + user)

check_token:sha(salt + day_of_year + user)== get ['token']

ここでのアイデアは、1日しか持続できないインスタントログイントークンを作成することです。個々のユーザーに電子メールで送信できます。

4

1 に答える 1

3

これを行うためのより良い方法は、有効期限のタイムスタンプ(たとえば、現在の時刻+ 86400秒)を計算し、そのタイムスタンプをデータベースに保存すると同時に、ハッシュに含めることです。

user | expiry | hash
-----+--------+--------------------------
...  | 123456 | sha(salt + 123456 + user)

次に、チェックするときに、(a)ハッシュが存在するかどうか、(b)ハッシュがユーザーと一致するかどうか、および(c)有効期限のタイムスタンプがまだ渡されていないかどうかを確認します。

これにより、ハッシュは、発行されてから翌日が始まるまで続くのではなく、常に1日続くようになります。

また、必要に応じて、データベースから期限切れのハッシュを簡単に削除して、行数を少なくすることができます。

于 2013-01-08T07:52:08.990 に答える