2012-02-18 1 views
0
public ActionResult Register(RegisterModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       // Attempt to register the user 
       MembershipCreateStatus createStatus; 
       Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 

       if (createStatus == MembershipCreateStatus.Success) 
       { 
        FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */); 
        return RedirectToAction("Index", "Home"); 
       } 
       else 
       { 
        ModelState.AddModelError("", ErrorCodeToString(createStatus)); 
       } 
      } 

      // If we got this far, something failed, redisplay form 
      return View(model); 
     } 

を除外されているので、 md5を使用してメンバーのパスワードをハッシュすることもできます。上記のソースのどこにこのような機能を追加する必要がありますか?ハッシュ新しいDBにおけるパスワードと店を古いものは、私は、私は登録フォームに記入しますが、私はちょうど新しく作成された自衛隊のデータベースとデフォルトのMDFのデータベースを交換した後にこのレジスタ関数が呼び出され

[UPDATE]

+0

パスワードハッシュにMD5を使用しないでください - それは、この時点ではそれほど安全ではないのです(周りグーグルでは割れのユーティリティの多くにつながります)。一方向ハッシュを実行する前に、塩を追加することもベストプラクティスです。 http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspxを参照してください。ここで最高の投票応答から:http://stackoverflow.com/questions/1702661/is-sha512managed最高の一方向ハッシュ - 利用可能ネット - 3-5-for-secu –

答えて

1

あなたは、これを達成するためにASP.NetメンバーシップAPIを使用しているように見えます。そのことを知っていれば、私はあなたがAPIの目的に忠実なこのAPIに対して使用しているコードを保持しようとします。私はAPIに渡す前にパスワードをハッシュしませんでした。パスワードを保存する前にMembershipProvider内でハッシュします。私はパスワード検証ルーチンの前にそれをハッシュします。これにより、ASP.NetメンバシップAPIとのインターフェイス方法だけが知識になるアプリケーションコード外でのパスワードハッシングの実装の詳細が保持されます。

MembershipProviderがどのように設定されているかを調べる必要があります。私はデフォルトのSQL MembershipProviderがこれを自動的に行うことができるかどうかは確信していますが、もしそうなら、それはすばらしいでしょう。それ以外の場合は、独自の実装でSQL MembershipProviderをオーバーライドできます。

開始点[1]は、SqlMembershipProviderクラスについて説明しています。

[1] http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx

関連する問題

 関連する問題