アクティベーションまたはパスワードリセットトークンを含むリンクを構築する最善の方法は何ですか? URLは電子メールで配信され、ユーザーはアカウントを有効にするかパスワードをリセットするためにURLをクリックする必要があります。この上糸の束がありますが、一貫したアプローチがあるように表示されず、それぞれのアプローチは、セキュリティと開発両方の観点から長所と短所を持っているように見えます:アクティベーション/パスワードリセットリンクを構築する最も良い方法
リンクは、パラメータとしてトークンを含んでいますこのアプローチでは、クエリ文字列
http://www.example.com/activations/:[email protected]
での電子メールアドレスは、トークンはデータベースにハッシュされ、電子メールは、ユーザーの検索に使用されます。次に、トークンは、brycptのようなライブラリーを使用して、データベース内のハッシュ・バージョンと比較されます。しかし、クエリ文字列に電子メールアドレスなどの機密データを含めると、exposes some security risksと思われます。
リンクには、パラメータまたはクエリ文字列としてのトークンのみが含まれます。
http://www.example.com/activations/:token
これは理想的なソリューションであるように思われるが、私は、データベースに格納されたトークンをハッシュ解除されない限り、トークンを比較する方法がわかりません。セキュリティの観点から、ある人はtoken in the database doesn't need to be hashedと主張し、他の人はtoken should be hashedと主張している。データベースにハッシュされたトークンを保持していると仮定すると、データベース内の各トークンを繰り返し、リンク内のトークンと比較するのは非常に時間がかかるようです。だから、おそらく私はこれについて間違っていますが、このアプローチを使用すると、私はデータベースにトークンをunhashedする必要があります。
誰もが最良のアプローチについて考えていますか?
この回答ありがとうございます!私はbcryptをハッシュに使用していたので、私は塩を使わずにハッシュすることができなかった! –