-1

セキュリティ意識の高いクライアントがいて、「パスワードを忘れた」フローで、パスワードをリセットするためのリンクが記載された電子メールが送信されます。現在、そのリンクは期限切れにならず、セキュリティ上の問題が発生する可能性があります。

私たちの開発者は、これを行う唯一の安全な方法はデータベースにフィールドを追加してそれを使用することだと確信しているようですが、それはまったく新しいデータベースをクライアントにプッシュすることを意味します... 理想的ではありません.

これを行うためのオプションは何ですか?軽量で邪魔にならないオプションはありますか?

ありがとう!

4

3 に答える 3

0

データベースにフィールドを追加することはおそらく最良の選択肢です。開発者はそこにいます。

別の方法として、リンク内に日付を含め、それに署名を追加する方法があります。これを安全にするのは難しく、URL が非常に長くなります。

  • 日付は抽出可能なままにしておく必要があります。これにより、日付だけに約 8 文字が追加されます (URL 用にエンコードする必要があります)。
  • 安全な署名を作成するのは困難です。アルゴリズムがわかっている場合、攻撃者は独自の有効なリンクを作成できます。一般的なハッシュ アルゴリズムは長い文字列を生成します。base62 でエンコードされた MD5 でさえ 22 文字の文字列になります。そのため、リンクに最低 10 文字を追加して計算する必要があります。
  • 安全なトークンには、20 個以上のランダムな文字が含まれている必要があります。
  • トークンはハッシュ化された状態でのみデータベースに保存する必要があるため、後でハッシュ化されたトークンを見つけることができるように、リンクに ID を含める必要があります。この数は、さらに 6 文字を追加できます。

リンクコードだけでも最低 44 文字が必要で、残りの URL と合わせるとかなり長いリンクになる可能性があります。一部の電子メール クライアントでは、リンクが長いと問題が発生します。

これらの 18 文字を節約し、データベース フィールドを追加することをお勧めします。次に追加する必要がある情報、おそらく最大クリック数を知っている人はいますか? データベースは拡張可能ですが、リンクは拡張できません。

于 2013-05-25T22:14:46.330 に答える