2009-07-24 4 views
5

私は、既存のパスワードまたは再生成されたパスワードを平文で電子メールで送信したくないため、パスワードリカバリサービスをASP.NETに実装して、パスワードリセットページに送信するユーザーへのリンクを電子メールで送信します。
メンバーIDをクエリ文字列のパラメータとして使用する方法をいくつか見てきましたが、私が使用しているカスタムメンバーシップテーブルがguidのidフィールドの代わりに使用されていると思われます。
私は、ユーザーがパスワードの回復を要求するたびに入力されるメンバーIDとともに、一意の(長い)IDを含むカスタムテーブルを作成する必要があると考えています。このIDは、パスワードリセットページへのリンクのクエリ文字列の一部として渡されます。 ユーザーがリンクをクリックすると、ページはカスタムテーブルのIDを検索し、そこからメンバーIDを取得して、ユーザーがそのメンバーシップに対してパスワードを変更できるようにします。
これは有効なアプローチのようですか。それは過労ですか?他の提案は非常に高く評価されます。ASP.NETでパスワードリカバリリンクを実装する方法は?

答えて

3

それは私がそれをどう扱うだろう。しかし、完了したら、データベースから行を削除し、何らかの種類のフラッドコントロールを実装することを忘れないでください。私はguidsのためのトンの(文字通り)組み合わせがあることを知っていますが、単純なIPチェックを実行し、最後の5分間に何回試行したのかをx回試した後にブロックするとリセットのセキュリティを高めることができます。これは、あなたのユーザベースがより大きく、パスワードを忘れる頻度が増えるほど重要になります。

2

完全にサービス可能なサウンド。私の唯一の推奨事項は、電子メールリンクのランダムIDの代わりに計算値を使用することです。おそらく、その人のユーザー名のハッシュバージョンですか?これは純粋に乱数のための私の軽蔑の負担です。 :)

関連する問題