2

私は現在、ユーザーがパスワードでログインできるようにする ac# Web アプリケーションを開発しています。含める必要がある機能は、パスワードを忘れた機能です。

パスワードを忘れた場合の推奨されるプロセスは何ですか?

私はこれを検討していました:

  • ユーザーが [パスワードを忘れた場合] をクリックし、電子メール アドレスを入力してください
  • メールを送信しました
  • メール内のリンクをクリックします (リンクは 1 回のみ有効で、期間内のみ有効です)
  • サイトに連れて行かれ、新しいパスワードを入力するように求められました (セキュリティの質問にも答えるべきですか?)
  • パスワードが変更され、そのようなユーザーに電子メールが送信されました
  • ユーザーは新しいパスワードでログインできるようになりました
4

2 に答える 2

3

あなたのアイデアはしっかりしているように見えますが、他の考慮事項をいくつか追加します。

  • 使用する電子メールで生成するトークンが、ランダム化用に設計された .Net Framework 暗号クラスを使用していることを確認してください。ランダムに見えるが、その目的のために設計されていないものではありません。
  • リセット メールの送信から、アカウントに対してアクションを実行しないでください (そうしないと、他のユーザーが自分のメール アドレスを知っている場合に、他のユーザーのアカウントをロックできます)。
  • 特定の電子メールに対して生成できる 1 時間あたりのリセット数のレート リミッターを追加します。そうしないと、(a) x 個の悪意のあるパスワードを使用してアカウントをロックし、(b) メール システムが配信できるよりも速くリセット メールを生成することで、誰かがユーザーを DOS する可能性があります。
  • 可能であれば、OpenID などの他のシステムに委ねます。自分で転がすと、物事を間違えるのは簡単です。
于 2012-12-13T01:46:51.127 に答える