2009-07-23 9 views
0

私は、ASP.NETのメンバーシップシステムで新しく作成されたユーザーのアクティベーションフォームを作成しています。ユーザーが作成されると、アクティベーションページへのリンクが付いた電子メールが送信されます。ただし、ユーザーがアクティブになる前に、ユーザー名とパスワードを確認したいので、テキストボックスに資格情報を入力させてください。ASP.NETのメンバーシップシステムで非アクティブユーザーのパスワードを検証できますか?

しかし、私が読んだことと私が見ている動作に基づいて、FormsAuthentication.AuthenticateまたはMembership.ValidateUserのいずれかでパスワードをテストする前に、ユーザーをアクティブ化する必要があるようです。私はこれが潜在的なセキュリティの弱点だと思う - それのまわりには何か方法があるのだろうか?

答えて

0

一度(有効期限が切れるなどGUID限り(例えば32文字)ユニークでランダムなIDを、含まれている必要があります自分の電子メールでのアクティベーションリンクは、また、内部に期限が切れる

おかげで、

グラハム有効でない場合は短期間)。そのIDは推測される可能性がありますが、それが推測できると思われる場合は、ユーザーが選択したユーザー名とパスワードはGUIDより数年前に推測されていました。

一方、実際に別の方法でやりたい場合は、アクティベーションコードを送信してサイトのアクティベーションページにリダイレクトし、ユーザー名、パスワード、アクティベーションコードを尋ねます。バックエンドで、アカウントを有効にしてから、ユーザー/パスの有効性をチェックします。有効でない場合は、アカウントを無効にします。それ以外の場合は、アカウントをアクティブにしたことを知らせるためにリダイレクトします。すべてが「アトミック」プロセスで行われます。

+0

これは実際に私が今やっていることです(activate-> test-> if_fail-> deactivate)が、もっと良い方法があると思っていました!ご協力いただきありがとうございます。 –

関連する問題